草庐IT

Generics

全部标签

java - Java 中的嵌套类型参数

这是我为了简化我的真实代码而编造的一个例子,所以如果它有点做作,我深表歉意。我想做的是从单个嵌套类型参数中有效地获取两个类型参数。我很确定这是不可能的,但我想我会试一试。//NotlegaljavacodepublicclassFoo>{//whereTisanothertypeparameterprivateCcoll;publicFoo(Ccoll){this.coll=coll;}publicvoidadd(Telem){this.coll.add(elem);}//UPDATEDTOADDGETTER/***Imayneedtoretrievethecollectionagai

java - 没有参数时如何获取泛型类?

我刚知道这个finelookingsyntaxCollections.emptyList()获取一个空的List,其中的元素应该是String类型。Java的源代码如下所示:publicstaticfinalListEMPTY_LIST=newEmptyList();:publicstaticfinalListemptyList(){return(List)EMPTY_LIST;}现在,如果我以通用类型不出现在参数列表中的方式编写方法,有什么方法可以访问变为T的实际类?我是说,到目前为止,我编写相同内容的方法是privateTget(Stringkey,Classclazz){//he

Java 泛型和专门的构造函数

(这可能是重复的,但我找不到-请随意指出)考虑以下Java类:publicclassA{publicA(T0t0,T1t1){...}}使用类似newA(1,"X")的东西很容易实例化这个类。.现在假设这个类的大多数实例都有一个String作为第二个类型参数T1并且在构造函数调用中使用的这种类型的对象也非常标准。如果A没有使用泛型,一个常见的扩展是一个没有第二个参数的附加构造函数:publicclassA{publicA(intt0,Stringt1){...}publicA(intt0){this(t0,newString("X"));}}不幸的是,这对于使用泛型的类来说似乎是不可能

java - 冗余通用参数

我有这两个接口(interface)和类:publicinterfaceIdentifiable{TgetId();}publicinterfaceGenericRepository,K>{Tget(Kid);}publicclassMyEntityimplementsIdentifiable{privateLongid;publicLonggetId(){returnid;}}publicclassMyService{privateGenericRepositorymyEntityRepository;}一切如愿以偿。但在我看来,GenericRepository(K)中的第二个泛型

java - List<Number> 和 List< 有什么区别?扩展号码>?

我有一个关于Javagenerics的非常基本的问题。我认为List和List是同质的。我是对的还是缺少一些基本的东西? 最佳答案 泛型更迂腐。表示数字或未知的子类。如果您获得这样的值,它将是Number,但你不能给出这种类型的值,因为你不知道哪个是有效的。区别在于参数和返回值。Listnumbers=newArrayList();Numbern=1;numbers.add(n);//ok.n=numbers.get(0);//oknumbers.add(1);//ok.Listnumbers2=newArrayList();num

Java - 通用参数无法解析

我正在编写一个通用的Dao接口(interface),但遇到了一些问题。我有以下通用实体接口(interface)publicinterfaceEntity{TgetId();//morecode}所以泛型参数应该代表实体的id。现在我想像这样写一个通用的Dao接口(interface)publicinterfaceDao>{//morecodeTfind(Eid);}能够调用Tfind(Eid)不必打电话Tfind(Objectid)这不是类型安全的。不幸的是,编译器似乎无法解析EinDao>你们中的任何人都知道这个问题是否有解决方法,或者这在Java中是不可能的吗?

java - 这会导致可变参数造成堆污染吗?

我收到警告:[unchecked]PossibleheappollutionfromparameterizedvarargtypeClass但我不确定它是否真的会污染:publicvoidregister(EventListenerlistener,Class...eventTypes){}如果有必要,这里是完整的实现:publicclassEventDispatcher{publicstaticConcurrentLinkedQueueeventQueue;publicstaticConcurrentHashMap,CopyOnWriteArrayList>eventsListene

java - Collections.max() 签名的实际使用

这是对ExplanationofCollections.max()signature的后续问题,其中接受的答案没有深入探讨此通配符的实际原因。max方法需要一个Collection我想不出这个通配符有帮助的实际案例。我什至提到了OracleMorefunwithwildcards它指出Ingeneral,ifyouhaveanAPIthatonlyusesatypeparameterTasanargument,itsusesshouldtakeadvantageoflowerboundedwildcards(?superT).Conversely,iftheAPIonlyreturns

java - 在泛型中接受自身作为类型参数有什么用

我在一个不相关的问题上看到了一些代码,但它让我很好奇,因为我从未见过这样的Java泛型结构。创建一个可以作为类型参数本身或其后代的泛型类有什么用。这是示例:abstractclassA>{abstractvoidfoo(Ex);}首先想到的是一个以列表为参数的列表。使用这段代码感觉很奇怪,你如何声明一个类型为A的变量?递归声明!?这真的有用吗?如果是这样,你们中有人在代码中看到了吗?它是如何使用的?编辑事实证明我的问题与thisone相同只是措辞不同,但该问题的答案也会回答我的问题。同时感谢您引用CuriouslyRecurringTemplatePattern其中给出了一些历史背景和

Java 泛型问题 : Class "not within bounds of type-variable" error.

我正在从事一个涉及泛型的类(class)项目。publicinterfaceKeyable{publicStringgetKey();}publicinterfaceDataElementextendsComparable>,Keyable,Serializable{...}publicclassCourseimplementsDataElement{...}publicinterfaceSearchTree>&Keyable>extendsSerializable{...}publicclassMySearchTreeimplementsSearchTree{...privatecl