草庐IT

Generics

全部标签

java - 为什么 javac 无法对以有界类型参数作为返回类型的静态方法的调用站点进行类型检查?

这个问题在这里已经有了答案:Whycanthisgenericmethodwithaboundreturnanytype?(1个回答)关闭4年前。为什么javac在此代码示例中不会因类型错误而中止importjava.util.List;publicclassStaticMethodWithBoundedReturnType{staticclassFoo{}staticclassBarextendsFoo{}staticFgetFoo(Stringstring){…}publicstaticvoidmain(String[]args){//Compileswithouterror,ev

java - 具有两个类层次结构的通用类

我有以下Java泛型问题我有下面的泛型类,它们可以概括为:publicclassMyClass{AnotherClassanother;OtherClassother;...}哪里...表示与案例无关的代码。对于类(class)MyClass哪个确切类型并不重要T是(截至目前)但对于两者:AnotherClassOtherClass绝对重要泛型类型是什么,并且将在运行时以此为基础做出决定。基于此,类型T不是完全任意的,它可以是类层次结构的实例T_1或类的层次结构T_2.定义类,类型T相当于Object但我知道这相当于T_1或T_2实体之间没有业务关系T_1和T_2所以我没有做:publ

java - 为什么列表列表 <? super E> 是列表 <?扩展列表 <? super E>> 但不是 List<List<? super E>>

我有一个通用接口(interface)interfaceListListextendsList>.由于某些原因,我无法转换ListList至List>.有什么方法可以做到吗?为什么它不起作用?到目前为止,我已经尝试了以下方法:简单的分配,这样我就成功分配了ListList至List>(1),但是当我尝试分配ListList时至List>我得到Incompatibletypes编译时错误(1.1)。显式类型转换,因为相同的Incompatibletypes而不起作用编译时错误(2)。转换为原始类型ListList,它有效(3),但我不喜欢原始类型。添加来自ListList的所有元素至Li

java - 在注解上使用默认的类文字值

我想用下面的注释来注释给定bean类的一些字段:@Target({FIELD})@Retention(RUNTIME)public@interfaceProcess{Classusing()defaultDefaultImplStrategy.class;}在不深入领域的情况下,每个带注释的属性都需要在其上定义一个ProcessingStrategy,因此需要在注释上使用using()属性。这很好,并且按照我希望的方式工作。我还想指定策略的默认实现,大多数时候使用(下面定义的默认值)。这在Eclipse中运行良好。但是,当我尝试使用常规JDK​​(通过maven调用)编译它时,出现以下

java - Java泛型中类型参数的前向引用

根据Java泛型常见问题解答http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ302不能以这种方式向前引用类型参数//error但还是可以的,B>//ok这两个例子都是用最新的jdk1.6.0_24验证的.我的问题是,在语言规范中,这是指定的、暗示的或可扣除的(即,如果它不真实,其他事情可能会爆炸)。我到处都找不到。更新在javac7中,是允许的。直觉上,类型参数的顺序无关紧要;类型系统要求类型变量之间没有循环依赖:.以前,这可以通过禁止前向引用来保证。显然javac7得到了改进以放

java - T 扩展 Comparable<T>

我有以下类(class)。classMyClass它使用以下构造函数。MyClass(Comparatorcomparator,Collectiondata)它有一个在构造函数中设置的字段,如下所示:this.data=Collections.unmodifiableCollection(data);在T实现Comparable的特殊情况下,我不想要求传入比较器,因为我可以只使用自然顺序。所以我想我应该能够使用这个构造函数:public>MyClass(Collectiondata)但显然存在类型不匹配:无法从CollectiontoCollection转换在上面的赋值语句中。我尝试了

java - 为泛型分配默认值

我通过反射调用一个方法,它的返回类型是通用的。我不希望返回值为null,所以在这种情况下,我想分配一个该泛型类型的默认值。也就是说,在通过反射调用方法后,我想执行如下操作:TresultNotNull=(T)reflectionMethodThatCanReturnNull.invoke(anObject);//Ifit'snull,let'sassignsomethingassignable.if(resultNotNull==null){if(resultNotNull.getClass().isAssignableFrom(Long.class)){resultNotNull=(

java - 检索泛型类的 .class 属性

我正在尝试使用构造函数(来自Ektorp库)扩展以下类:publicclassCouchDbRepositorySupportimplementsGenericRepository{...protectedCouchDbRepositorySupport(Classtype,CouchDbConnectordb){...}这是我的实现:publicclassOrderRepositoryextendsCouchDbRepositorySupport>{publicOrderRepository(CouchDbConnectordb){super(Order.class,db);问题出在

java - 使用 Scala 中的原始类型实现 Java 接口(interface)

我正在尝试使用Scala为Sonar构建一个扩展。我需要扩展以下Java接口(interface):publicinterfaceDecoratorextendsBatchExtension,CheckProject{voiddecorate(Resourceresource,DecoratorContextcontext);}但是资源类型实际上是这样定义的:publicabstractclassResource我知道我可以解决创建Java原始父类(superclass)的问题。我想坚持使用Scala-only,也知道是否有我遗漏的解决方案,以及我是否可以建议SonarSource人员

java - Spring data - 域对象继承和泛型方法

我有一些域对象:@EntitypublicclassLog{}@EntitypublicclassLogLetterextendsLog{}@EntitypublicclassLogActionextendsLog{}我只想拥有一个存储库,它允许我获取Log的子项。理论上我可以做这样的事情吗?publicinterfaceLogRepositoryextendsCrudRepository{@Query("selectfrom?1)publicListgetLog(Classclazz);}并调用这个方法:ListlogLetters=getLog(LogLetters.class);