草庐IT

Generics

全部标签

java - Eclipse for Java 中的 "unavoidable generic type problems"是什么?

在“错误/警告”面板中设置Java编译器的首选项时,Eclipse可以配置为“忽略不可避免的泛型类型问题”。Java中这种“不可避免”的泛型类型问题是什么?忽略这些安全吗?它们什么时候出现? 最佳答案 来自thedocumentation特征:Whenenabled,thecompilerwillissueanerrororawarningevenwhenitdetectsagenerictypeproblemthatcouldnothavebeenavoidedbytheprogrammer.Asanexample,atypema

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();但我必须手动进行类型

Java 泛型 : wildcards

所以我正在阅读泛型以重新熟悉这些概念,尤其是在涉及通配符的地方,因为我几乎从不使用它们或遇到它们。从我所做的阅读中,我无法理解他们为什么使用通配符。下面是我经常遇到的一个例子。voidprintCollection(Collectionc){for(Objecto:c){System.out.println(o);}}你为什么不把它写成:voidprintCollection(Collectionc){for(To:c){System.out.println(o);}}另一个来自oracle网站的例子:publicstaticdoublesumOfList(Listlist){doub

java - int.class.isInstance(Object) 是矛盾的吗?

这是一个例子:publicbooleancheck(Classclazz,Objecto){returnclazz.isInstance(o);}check(int.class,7);//returnsfalse自isInstance接受Object,它不适用于int,因为int是原始类型并自动装箱为Integer.那么是否有可能编写一个通用的检查方法?或者我应该确保clazz的类型是Class? 最佳答案 并不是所有的Class对象都代表类/引用类型;还有Class对象表示原始类型。这很有用,因为在对字段和方法使用反射时,您经常需

java - self 比较接口(interface)在集合类中做什么?

在练习反射时,我开始了解Collections类中的SelfComparableInterfaceinterfacejava.util.Collections$SelfComparable这个接口(interface)有什么用? 最佳答案 它什么都不做。它是私有(private)的,因此您无法导入它。真的是注释说类型是“SelfComparable”,实际上并没有使用。没有实现这个接口(interface)。使用它的代码依赖于它将在运行时被丢弃的事实。publicstaticTmax(Collectioncoll,Comparato

Java 泛型 : method signature for (deep copy of) generic Maps

我有一些Map,它们本身又可能包含Map(任何类型)。我写了一个带有签名的方法:publicstaticHashMapdeepCopyHashMap(HashMaps);但是,我现在想概括此代码以支持一般的Map,但仍会返回与参数类型相同的对象。所以不是:publicstaticHashMapdeepCopyHashMap(HashMaps);publicstaticCheckedMapdeepCopyCheckedMap(CheckedMaps);publicstaticTreeMapdeepCopyTreeMap(TreeMaps);...etc.我想要这样的东西:publicst

java - 创建不可变通用对象的 HashMap

我不认为有一种方法可以有效地(如果有的话)这样做,但我想我会问一下以防其他人知道。我正在寻找创建自己的缓存/查找表。为了让它尽可能有用,我希望它能够存储通用对象。这种方法的问题在于,即使您可以制作Collections.unmodifiableMap,immutableMap,etc,这些实现只会阻止您更改Map本身。它们不会阻止您从map中获取值并修改其基础值。本质上,我需要的是达到HashMap效果的东西,但据我所知,这样的事情不存在。我原本以为我可以在get方法中只返回缓存中值的副本,但由于Java的Cloneable界面被顶起,无法简单调用publicVgetItem(Kkey

Java 泛型 2 向引用

我试图在java中创建两个相互包含的类之间的泛型关系。这些对象本质上形成了交替层树。到目前为止,我发现的最接近的SO问题是:Javagenericsofgenericsof,这对我的问题很接近并且有些帮助,但仍然不同,我需要更多指导。这是情况,或者更确切地说,我希望它是这样的:abstractclassGroup>>{privateListitems;publicListgetItems(){...}publicvoidsetItems(Listitems){...}}abstractclassItem>>{privateListsubGroups;publicListgetSubGr