草庐IT

【JavaSE】初识泛型

全部标签

带有泛型的 Java 枚举值

我需要这样的东西:publicenumEnum{ENUM1(Class1.class,"ADESCRIPTION",newClass1()),ENUM2(Class2.class,"ADESCRIPTION",newClass2()),ENUM3(Class3.class,"ADESCRIPTION",newClass3());privateEnum(Classclazz,Stringdescription,Objectinstance){}}我需要:我定义所有ClassX的不同实例的一个地方(它们扩展了相同的ClassSuper)。当然,我可以为每个ClassX定义不同的枚举,但这并

java - 无法在泛型中实例化类型

我有这门课publicclassTree{//ListofbranchesforthistreeprivateList>branch=newArrayList>();publicTree(Tt){this.t=t;}publicvoidaddBranch(Treesrc){branch.add(src);}publicTreegetBranch(intbranchNum){return(Tree)branch.get(branchNum);}privateTt;}我正在尝试使用这个从这个类中创建一个变量publicstaticvoidmain(String[]args){Treenum

java - 在运行时检查类是否具有使用泛型的特定构造函数

大家好:)我正在尝试在类中选择正确的构造函数。这是代码:Constructor[]constructors=targetClass.getConstructors();ConstructorgoodConstructor=null;for(Constructorconstructor:constructors){Class[]parameterTypes=constructor.getParameterTypes();if(parameterTypes.length=1&¶meterTypes[0].equals(Map.class)){//heregoodConstructo

Java泛型,列表列表

这件事让我难住了。我有一个类如下:publicclassSpecialListimplementsList{//overridenmethods}现在我有以下方法契约要在更高的类中尊重:publicclassMyClass{privateListbigList=newArrayList();publicvoiddoStuff(Listlist){bigList.add((SpecialList)list);//doesnotcompile-invalidcast}}我真的不确定我在这里做错了什么。我有一个实现List的类接口(interface),但我无法将该类转换为List?这对我来

java - 如何获取泛型中 "enum"的值?

如何获取泛型中“枚举”的值?publicclassSorter>{publicSorter(){T[]result=T.values();//另一方面,我可以查询枚举类的values():enumTmpEnum{A,B}publicclassTmp{voidfunc(){T[]result=TmpEnum.values();// 最佳答案 Class::getEnumConstants您不能直接从T获取它因为泛型是erased由Java编译器提供,因此在运行时不再知道是什么T是。您可以做的是要求Class对象作为构造函数参数。从那里

当类是泛型时,Java 通配符奇怪的行为

我认为我对Java泛型有一定的了解。此代码无法编译,我知道原因。我们只能将Animal类型或其父类(superclass)型(如对象列表)的列表传递给测试方法packagescjp.examples.generics.wildcards;importjava.util.ArrayList;importjava.util.List;classAnimal{}classMammalextendsAnimal{}classDogextendsMammal{}publicclassTest{publicvoidtest(Listcol){col.add(newAnimal());col.add

java - 泛型名称冲突

考虑:publicinterfaceFoo{publicstaticclassX{}publicvoidfoobar(Tt);}publicclassBar{Foofoo=newFoo(){publicvoidfoobar(Xt){}};}我无法表达我的意思是X来自Bar而不是Foo.X在foobar(Xt)执行。除了重命名通用参数X没有别的办法吗?在Bar还是静态内部类? 最佳答案 我认为没有办法消除类型参数的歧义,我认为这是一个合理的设计决策。约定很明确,如果可能,类型参数的长度应为一个字符,而另一方面,其他类的名称不应为一个字

java - 静态方法和继承的返回类型中的泛型

静态方法的返回类型中的泛型似乎与继承相处得不好。请看下面的代码:classClassInfo{publicClassInfo(Classclazz){this(clazz,null);}publicClassInfo(Classclazz,ClassInfosuperClassInfo){}}classA{publicstaticClassInfogetClassInfo(){returnnewClassInfo(A.class);}}classBextendsA{//Error:ThereturntypeisincompatiblewithA.getClassInfo()public

Java:声明具有两个相关泛型类型的映射 (<T> Map<Class<? extends ClassA<T>>,Class<? extends ClassB<T>>>)

是否可以声明一个映射,将特定子类的键映射到特定子类的值,但确保两个类共享相同的类型参数?对于背景:ClassA和ClassB都实现了公共(public)资源的行为publicabstractclassClassA{publicabstractTgetResource();}publicabstractclassclassB{publicabstractvoidconsoumeResource(Tresource);}我想从ClassA和ClassB的实现进行映射,并确保只有“兼容”对可以放在一个条目中。 最佳答案 另一种方法是提供您

java - 使用泛型实现抽象类中的公共(public)方法

假设我有这个层次结构:publicabstractclassAbstractEntityimplementsCloneable{...publicAbstractEntityclone(){Clonercloner=newCloner();AbstractEntitycloned=cloner.deepClone(this);returncloned;}}publicclassEntityAextendsAbstractEntity{...}这很好用,我能做到:EntityAe1=newEntityA();EntityAe2=(EntityA)e1.clone();但我必须手动进行类型