草庐IT

Generics

全部标签

具有有界通配符的泛型类型的 Java 泛型集合

请帮我解决这个问题:如果LionIS-AAnimal并给出Cage:Cagec=newCage();//ok,但是Set>cc=newHashSet>();//notok我在这里没有看到什么? 最佳答案 当分配给具有非通配符泛型类型的变量(Set)时T,被分配的对象必须恰好有T作为其通用类型(包括T的所有通用类型参数,通配符和非通配符)。在你的情况下T是Cage,与Cage不同类型.你能做什么,因为Cage可分配给Cage,是使用通配符类型:Set>a=newSet>(); 关于具有有界

java - 为什么这个泛型不能识别它的父类(super class)边界(Java)?

我有一个对象实例系统,其中包含对定义对象的引用。每个继承树都有一个顶级类。实例对象具有对相应定义类的泛型引用。在getter中使用泛型,顶级对象的子类无需转换即可获得正确的类型定义。但是,再次被子类化的抽象子类不能:classDef{}abstractclassAnimal{Ddef;DgetDef(){returndef;}}classCatDefextendsDef{}classCatextendsAnimal{}abstractclassBearDefextendsDef{}abstractclassBearextendsAnimal{}classBlackBearDefexte

java - 为什么 Java 编译器会提示将 foreach 与原始类型一起使用?

这个问题在这里已经有了答案:Whatisarawtypeandwhyshouldn'tweuseit?(16个答案)关闭6年前。在Java中的for-each循环中使用泛型时,我遇到了一个奇怪的编译器错误。这是Java编译器错误,还是我真的遗漏了什么?这是我的整个类(class):publicclassGenerics{publicGenerics(TmyObject){//Ididn'treallyneedmyObject}publicListgetList(){Listlist=newArrayList();list.add("w00tStackOverflow");returnl

java - Java 中的泛型

我想了解以下类型的语法。例子:publicinterfaceA>{}这个接口(interface)的逻辑是什么? 最佳答案 这将按如下方式使用:classXimplementsA{/*...*/}换句话说,你被强制制作A的参数类(class)X本身,以及类似classXimplementsA的东西被禁止。此构造使接口(interface)可以访问X通过通用参数,类型限制确保它不会被滥用。例如,T现在可以假设公开所有方法A注意这个结构形式上有点类似于curiouslyrecurringtemplatepattern在C++中(尽管它在

java - 具有泛型返回类型的棘手静态泛型方法本身可能是泛型

我有一个类如下:publicclassMyConverter{publicTconvert(Objecto,Stringtypeidentifier,Tdummy){...dosomeconversionssuchasajavaarraytoanArrayListorviceversa...basedonatypeidentifiersyntaxsimilartoClass.getName()butwhich...embedsinformationaboutgenericsubtypes}}并希望能够做这样的一般事情:int[]ar={...};ArrayListdummy=null;

java - 在java接口(interface)中使用实现类型

我想制作一个接口(interface),强制实现它的每个类都具有特定功能,用于实现类的类型。假设我有类MyClassA、MyClassB、MyClassC等,它们都需要在它们自己的类型上有一个函数:在MyClassA中:publicclassMyClassAimplementsMyClass{MyClassAfunction(MyClassAx){doSomethingImplementedInMyClassA(x);}}在MyClassB中:publicclassMyClassBimplementsMyClass{MyClassBfunction(MyClassBx){doSomet

Java 泛型方法和作为参数的方法对象有什么区别?

泛型方法和只接受对象的方法有什么区别?它如何确保类型安全?例如:以下面代码段中提到的任何一种形式定义我的接口(interface)有什么区别?publicinterfaceMyInterface{publicStringmyMethod(MTt);}或publicinterfaceMyInterface{publicStringmyMethod(Objectt);}在我看来,泛型方法只有在我们对其进行类型绑定(bind)时才有优势。例如,类型参数应该是可序列化类的。否则它没有意义..寻找更多见解publicinterfaceMyInterface{publicStringmyMetho

Java 多态性 : How can I avoid type casting input parameters?

假设我们有一个带有compare()函数的Parent接口(interface)。publicinterfaceParent{publicintcompare(ParentotherParent);}假设childChild1、Child2、Child3实现了这个接口(interface)ParentpublicclassChild1implementsParent{@Overridepublicintcompare(Parentother){Child1otherChild=(Child1)other;}}此外,我正在使用泛型代码中的其他地方。所以我需要从代码的其他部分比较两个类型为

java - 初始化泛型类型的 Java 泛型数组

所以我有这个正在开发的通用HashTable类,我想将它用于任意数量的传入类型,我还想将内部存储数组初始化为LinkedList的数组(用于冲突目的),其中每个LinkedList都提前(为了类型安全)指定为HashTable类的泛型类型。我怎样才能做到这一点?下面的代码最能说明我的意图,当然编译不过。publicclassHashTable{privateLinkedList[]m_storage;publicHashTable(intinitialSize){m_storage=newLinkedList[initialSize];}} 最佳答案

java - 为什么泛型绑定(bind) "E implements I"会导致编译器错误?

为什么编译:classMaxMin>{Emax=null;Emin=null;}...但这不是吗?classMaxMin>{Emax=null;Emin=null;} 最佳答案 通用类型边界仅指定extends和super。引用JavaGenericsTutorial(强调我的)Todeclareaboundedtypeparameter,listthetypeparameter'sname,followedbytheextendskeyword,followedbyitsupperbound,whichinthisexamplei