草庐IT

Generics

全部标签

java - 如何按类类型创建泛型类型安全的 HashMap?

这个问题在这里已经有了答案:Javamapwithvalueslimitedbykey'stypeparameter(6个答案)关闭8年前。我想创建一个HashMap,将特定的类类型映射到一个特定的新对象。稍后我想传递类类型并获取对该特定对象的引用。简单示例:Map,?>values=newHashMap();publictget(Classtype){returnvalues.get(type);}//petandcardonotshareanyinterfaceorparentclassclassPet;classCar;//error:notapplicableforargume

java - 为什么不能分配 I <?将类型> 扩展到 <类型>?

以下语句:URLClassLoaderucl=(URLClassLoader)ClassLoader.getSystemClassLoader();Classuclc=ucl.getClass();失败错误:Typemismatch:cannotconvertfromClasstoClass这里为什么需要类型转换?我发现有几篇文章解释了为什么你不能做相反的事情(将T分配给a),但这(有点)显而易见并且易于理解。注意:我是在eclipseLuna下编写代码的,所以我不知道这是Luna的怪癖,还是我真的不了解泛型。 最佳答案 Covar

java - 限制 Java 中的类型以用于列表

我怎样才能传递List我没有向方法声明一组特定的允许类型。例如将类型限制为整数、boolean值和String://Pseudocodepublicvoidmethod(ListmyList);如果我使用List我可以将所有内容都放入该列表中:publicvoidmethod(ListmyList);如果我使用List,我可以放置Parent的所有实例及其子类到该列表中:publicvoidmethod(ListmyList);如果我是声明这些子类(AllowedTypeAextendsParent)的人,那就足够了。但是,如果我不是我想使用的类的所有者(我不能使Integer扩展Pa

java - Java 中的部分泛型

所以我有一个接口(interface)-publicinterfaceGenericTranslator{Totranslate(Fromfrom);}并有一个实现它的类publicclassTimeToStringTranslatorimplementsGenericTranslator{Stringtranslate(Timetime){...}}但我现在想要一个抽象层,其中输入类型From是Time//anabstractclasswithpartialgenericdefinedpublicabstractclassAbstractTimeTranslatorimplement

java - 为什么泛型类型参数上的注释对于嵌套类型不可见?

我没有得到以下代码的行为:https://gist.github.com/tomaszalusky/3e3777b4fd0c6096f3f707bb19b50b52-查看嵌入式:importjava.lang.reflect.*;importjava.util.*;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;publicclas

java - JDK 8 的类型推断如何与泛型一起工作?

我的代码无法使用JDK7进行编译,但可以使用JDK8进行编译。抽象实际代码:interfaceA{...}classBimplementsA{...}publicvoidAAA(Listlist){...}AAA(Collections.singletonList(newB()));Collections.singletonList定义为publicstaticListsingletonList(To){returnnewSingletonList(o);}据我所知,基于泛型,T将被推断为B,因此Collections.singletonList(newB())将是无法分配给List的

Java:特定枚举和通用 Enum<?> 参数

我想将任何枚举值传递给实用程序类中的方法,并获得相同枚举类型的另一个枚举值。像这样:publicclassXMLUtils{publicstaticEnumgetEnumAttribute(Elementelement,Stringname,EnumdefaultValue){if(element.hasAttribute(name)){StringvalueName=element.getAttribute(name);//searchforvaluefor(Enumvalue:defaultValue.getClass().getEnumConstants())if(value.t

java - 在它的抽象父类(super class)中使用子类的泛型类型?

在我的代码中有以下抽象父类(superclass)publicabstractclassAbstractClass{...}还有一些子类比如publicclassChildClassAextendsAbstractClass{...}publicclassChildClassBextendsAbstractClass{...}我正在寻找一种优雅的方式来以通用方式在抽象类中使用子类的通用类型(GenericTypeA、GenericTypeB等)。为了解决这个问题我目前定义了方法protectedabstractClassgetGenericTypeClass();在我的抽象类中并实现了

java - 术语 "restricted"在 Java 中是什么意思?

我在教科书中关于集合和泛型的章节中找到了这个词。这句话是"Sincethetypeofobjectsinagenericclassisrestricted,theelementscanbeaccessedwithoutcasting."简单来说,谁能解释一下这句话的意思? 最佳答案 当你使用一个没有泛型的集合时,集合将接受Object,这意味着Java中的一切(如果你尝试,也会给你Object从中得到一些东西):Listobjects=newArrayList();objects.add("SomeText");objects.ad

Java 泛型 : chaining together generic function object

我一直在努力解决以下问题。我有一系列函数对象,每个函数对象都有自己的输入和输出类型,这些类型是通过java中的泛型类型参数定义的。我想将它们排列成一个链,以便将原始数据输入到第一个函数,转换为输出类型,这是下一个对象的输入类型,依此类推。当然,这对于硬编码来说是微不足道的,但我希望代码可以插入到新的函数对象中。如果我只是省略了类型参数(只有最终输出类型),这就是事情的样子:publicTprocess(){Iteratorit=source.provideData();for(Pipepipe:pipeline){it=pipe.processIterator(it);}returns