假设我有几个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) 我最近在空闲时间开始自由开发PHP + MySQL开发,以补充我从编写C#/ SQL Server代码的全职工作中获得的收入.我注意到的一个与数据库相关的重大差异是MySQL有一个枚举数据类型,而SQL Server没有.
当我注意到enum数据类型时,我立即决定扁平化我的数据模型,转而使用一个使用枚举的大表而不是许多用于离散实体的小表和一个大的"桥"类表.
我目前正在处理的网站是一个唱片公司.我只有一个表来存储标签的版本,即"版本"表.我在任何地方都使用了枚举,我通常会将一个外键用于一个单独的表 - 艺术家名称,标签名称和其他几个.用户可以通过后端编辑这些枚举列.我在枚举时看到的主要优点是使用文本字段可以重用艺术家名称,这样可以提高数据的完整性.我还看到在数据库中拥有更少表的优势.
顺便说一句,我还有一个额外的表和一个桥表 - 有一个"标签"功能,可以为特定版本添加标签,因为这是一个多对多的关系,我觉得一个离散的标签表和一个桥接表将标记连接到发布是合适的
以前从未在数据库中遇到过ENUM数据类型,我想知道我是否正在明智地使用这个功能,或者如果有问题我没有预见到可能会因为这个数据架构而回过头来咬我.经验丰富的MySQL'ers,你怎么看?
每当在执行Java应用程序期间多次在同一对象上调用它时,hashCode方法必须始终返回相同的整数,前提是不修改对象的equals比较中使用的信息
上面的语句是在hashcode契约下的http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#hashCode ()上编写的.
我对声明有疑问,即
如果没有在对象的等比较中使用的信息被修改
即使我们修改equals方法仍然hashcode将返回相同的整数.因此,哈希码值取决于对象的等价比较.
我Authority
在视图范围内有一个支持bean ,我有两个页面viewRoles
并editRole
映射到这个支持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相关的问题或其他问题?请指教.
我有一个想要阅读的hadoop分布式文件系统的二进制文件.我正在使用FSDataInputStream(它扩展了DataInputStream).我有长度为"len"的缓冲区.我使用readBytes = stream.read(buffer)方法从文件中读取"len"字节数到缓冲区.但实际读取的字节数(readBytes)小于缓冲区大小(len),即使我知道文件中存在"len"个字节数.那么为什么FSDataInputStream读取的字节数少于我要求它读取的数量?任何的想法?
我一直在寻找一个特定的开源库,其中所有单元测试都被定义为他们测试的类中的静态嵌套类,例如:
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作为构建工具的项目约定吗?
new Date("05-MAY-09 03.55.50")
Run Code Online (Sandbox Code Playgroud)
这有什么不对吗?我正在收到illegalArgumentException
我正在尝试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)
谢谢你的帮助.
我有一个5个对象的数组.
我想将索引为1的对象分配给NSSTRING.
nsstring *abc = [array objectAtindex:1];
Run Code Online (Sandbox Code Playgroud)
我知道这是错误的语法,这是返回对象,就像这样.
我如何获得索引为1的值并将其分配给字符串?
问候
我有一个名为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)
谢谢和最好的问候.
我有几个与 Web 技术相关的问题。从我阅读 Apache 和 Netty 文档的蚂蚁来看,我无法弄清楚使用 HTTP 多部分/发布请求下载大文件的一些事情。
是否可以发送指示请求以较小的多部分(块)下载文件的 HTTP 请求?
如何在多部分下载大文件?
如果我不理解“多部分”术语本身,请纠正我。我知道很多人都遇到过这个问题,应用程序(客户端)下载文件的部分较小,所以当网络中断时,应用程序不需要重新从头下载整个文件。特别是当文件不是任何媒体文件时。
谢谢。
java ×9
enums ×1
generics ×1
hadoop ×1
http ×1
iphone ×1
jquery ×1
jsf-2 ×1
junit ×1
mysql ×1
objective-c ×1
perl ×1
php ×1
recordstore ×1
spring ×1
type-bounds ×1
unit-testing ×1