小编mat*_*t b的帖子

泛型:编译器似乎无法识别传递给参数的类型与返回的类型相同 - 为什么?

假设我有几个POJO都扩展了一个常见的超类型,BaseObject.

我有一个GenericDao声明为public interface GenericDao<T>.

对于每个特定于类型的DAO,我有一个扩展泛型类型的接口,并将其限制为具体类型(public interface UserDao extends GenericDao<User>),然后是特定于类型的DAO的实现.

在尝试使用大量GenericDao实现的类中,我有一个看起来像的方法

public <T extends BaseObject> long create(T object) {
    return getDao(object.getClass()).save(object);
}
Run Code Online (Sandbox Code Playgroud)

如果我实现getDao()它的参数是一个Class对象,例如

private <T extends BaseObject> GenericDao<T> getDao(Class<T> clazz) { ... }
Run Code Online (Sandbox Code Playgroud)

然后调用getDao(object.getClass()create()方法无法编译-编译器似乎解释的返回类型getDao()

GenericDao<? extends BaseContractObject>
Run Code Online (Sandbox Code Playgroud)

而不是认识到这getDao(Class<T>)将使我返回GenericDao相同的类型T.

有人可以解释为什么会这样吗?据我所知,相同类型绑定或通配符的重复出现不一定是指同一类型; 然而,似乎编译器应该从签名中识别出getDao(Class<T>)传入的T应该与返回的T相同(但显然它不能识别这个,为什么我无法理解的部分).

如果我改为定义getDao签名

private <T extends BaseContractObject> GenericDao<T> getDao(T obj) { …
Run Code Online (Sandbox Code Playgroud)

java generics type-bounds

1
推荐指数
1
解决办法
677
查看次数

这是否适合使用MySQL枚举数据类型?

我最近在空闲时间开始自由开发PHP + MySQL开发,以补充我从编写C#/ SQL Server代码的全职工作中获得的收入.我注意到的一个与数据库相关的重大差异是MySQL有一个枚举数据类型,而SQL Server没有.

当我注意到enum数据类型时,我立即决定扁平化我的数据模型,转而使用一个使用枚举的大表而不是许多用于离散实体的小表和一个大的"桥"类表.

我目前正在处理的网站是一个唱片公司.我只有一个表来存储标签的版本,即"版本"表.我在任何地方都使用了枚举,我通常会将一个外键用于一个单独的表 - 艺术家名称,标签名称和其他几个.用户可以通过后端编辑这些枚举列.我在枚举时看到的主要优点是使用文本字段可以重用艺术家名称,这样可以提高数据的完整性.我还看到在数据库中拥有更少表的优势.

顺便说一句,我还有一个额外的表和一个桥表 - 有一个"标签"功能,可以为特定版本添加标签,因为这是一个多对多的关系,我觉得一个离散的标签表和一个桥接表将标记连接到发布是合适的

以前从未在数据库中遇到过ENUM数据类型,我想知道我是否正在明智地使用这个功能,或者如果有问题我没有预见到可能会因为这个数据架构而回过头来咬我.经验丰富的MySQL'ers,你怎么看?

php mysql enums recordstore

1
推荐指数
1
解决办法
421
查看次数

java中的Hashcode契约?

每当在执行Java应用程序期间多次在同一对象上调用它时,hashCode方法必须始终返回相同的整数,前提是不修改对象的equals比较中使用的信息

上面的语句是在hashcode契约下的http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#hashCode ()上编写的.

我对声明有疑问,即

如果没有在对象的等比较中使用的信息被修改

即使我们修改equals方法仍然hashcode将返回相同的整数.因此,哈希码值取决于对象的等价比较.

java

1
推荐指数
1
解决办法
5118
查看次数

在从一个页面导航到另一个页面(View Scope)时设置辅助bean中的属性不起作用

Authority在视图范围内有一个支持bean ,我有两个页面viewRoleseditRole映射到这个支持bean.

viewRoles页面中有一个转到editRole页面的链接:

<h:form>
  <h:commandLink value="#{au.displayName}" action="pretty:editRole">
    <f:setPropertyActionListener target="#{authority.authorityId}" value="#{au.id}"/>                   
  </h:commandLink>
</h:form>
Run Code Online (Sandbox Code Playgroud)

它导航到另一个页面,但该属性未设置,即使bean位于视图范围内并且两个页面都映射到同一个辅助bean.它仅在我将视图范围更改为会话范围时才有效.

注意:我的bean是由Spring管理的,这个视图范围也不是JSF的默认值@ViewScoped,它是我在http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s上找到的自定义范围.-viewscope-to-spring-3-0 /.我也使用PrettyFaces来管理我的导航.

问题是,上述场景是否应该与真正的JSF2一起使用,@ViewScoped @ManagedBean还是与Spring相关的问题或其他问题?请指教.

java spring jsf-2

1
推荐指数
1
解决办法
1423
查看次数

为什么Hadoop API FSDataInputStream的读取小于缓冲区大小?

我有一个想要阅读的hadoop分布式文件系统的二进制文件.我正在使用FSDataInputStream(它扩展了DataInputStream).我有长度为"len"的缓冲区.我使用readBytes = stream.read(buffer)方法从文件中读取"len"字节数到缓冲区.但实际读取的字节数(readBytes)小于缓冲区大小(len),即使我知道文件中存在"len"个字节数.那么为什么FSDataInputStream读取的字节数少于我要求它读取的数量?任何的想法?

java hadoop

1
推荐指数
1
解决办法
1604
查看次数

将单元测试嵌套在它测试的类中而不是在另一个(外部)类中的目的是什么?

我一直在寻找一个特定的开源库,其中所有单元测试都被定义为他们测试的类中的静态嵌套类,例如:

public class Foo {

    public int bar() { ... }

    public static class UnitTest {
        @Test
        public void testBar() { ... }
    }
}
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这样做的项目或Java代码库,我对它背后的想法非常好奇.

  • 除了FooTest在另一个源文件夹中有一个单独的类之外,这个模式有什么优势src/test/java吗?

  • 这是使用Gradle作为构建工具的项目约定吗?

java junit unit-testing

1
推荐指数
1
解决办法
972
查看次数

0
推荐指数
1
解决办法
159
查看次数

如何找出我使用Perl的Java版本?

我如何找出我正在使用Perl编程的Java版本,并使用它执行一些基于它的jar文件?

java perl

0
推荐指数
1
解决办法
1692
查看次数

jQuery .html().长度没有返回正确的值

我正在尝试1)当用户关注它时删除textarea中的默认文本.2)如果他没有输入任何内容并点击,则应重新插入默认文本.

下面的代码处理案例#1,但Chrome和Safari(但不是Firefox)中的案例#2失败了.当我输入文本(所以$(this).html().length> 0)然后单击时,jQuery错误地确定$(this).html().length == 0,因此它删除了输入的文本和重新插入默认文本.

jQuery(document).ready(function inputHide(){
    $('textarea').each(function(){
        var this_area = $(this);
        var this_area_val;

        this_area_val = this_area.html();
        this_area.focus(function(){
            if(this_area.html() == this_area_val){
                    this_area.html('');
            }
        }).blur(function(){
            if(this_area.html().length == 0){
                this_area.html(this_area_val);
            }
        }); 
    });
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

jquery

0
推荐指数
1
解决办法
4831
查看次数

将值从数组赋值给字符串

我有一个5个对象的数组.

我想将索引为1的对象分配给NSSTRING.

nsstring *abc = [array objectAtindex:1];
Run Code Online (Sandbox Code Playgroud)

我知道这是错误的语法,这是返回对象,就像这样.

我如何获得索引为1的值并将其分配给字符串?

问候

iphone objective-c

0
推荐指数
1
解决办法
1503
查看次数

关于对象和实例的基本问题

我有一个名为Group的类,它描述如下:

public class Group{
    public int identifier;
    public int[] members;
    public String name; 
}
Run Code Online (Sandbox Code Playgroud)

现在,我想为这个类创建许多不同的对象,我的意思是例如1000个组,每个组有不同数量的成员,

怎么能成功呢?我的意思是我不会做1000条指令:

Group g1= new Group(....); 
Run Code Online (Sandbox Code Playgroud)

谢谢和最好的问候.

java

0
推荐指数
1
解决办法
77
查看次数

Java Multipart/post 下载

我有几个与 Web 技术相关的问题。从我阅读 Apache 和 Netty 文档的蚂蚁来看,我无法弄清楚使用 HTTP 多部分/发布请求下载大文件的一些事情。

  1. 是否可以发送指示请求以较小的多部分(块)下载文件的 HTTP 请求?

  2. 如何在多部分下载大文件?

如果我不理解“多部分”术语本身,请纠正我。我知道很多人都遇到过这个问题,应用程序(客户端)下载文件的部分较小,所以当网络中断时,应用程序不需要重新从头下载整个文件。特别是当文件不是任何媒体文件时。

谢谢。

java http web-technologies apache-httpclient-4.x

0
推荐指数
1
解决办法
3185
查看次数