草庐IT

Generics

全部标签

java - 要使用嵌套的通用集合或自定义中间类?

在将泛型引入Java语言之前,我会编写封装集合集合的类。例如:classAccount{privateMaptradesByRegion;//KEY=Region,VALUE=TradeCollection}classTradeCollection{privateMaptradesByInstrument;//KEY=Instrument,Value=Trade}当然,使用泛型,我可以这样做:classAccount{privateMap>trades;}我现在倾向于选择选项#2(而不是选项#1的泛型版本),因为这意味着我最终不会出现仅出于以下目的而存在的类的激增包装一个集合。但我有一

java - 覆盖具有通用返回类型的方法

假设我有一个定义了以下抽象方法的父类(superclass)publicabstractClassgetMainClass();现在如果我想在某些子类中覆盖它publicClassgetMainClass(){returnImplementation.class;}我收到有关类型安全和未经检查的转换的警告:Typesafety:ThereturntypeClassforgetMainClass()fromthetypeSubFooneedsuncheckedconversiontoconformtoClassfromthetypeSuperFoo不是Class属于Class如果?有什么

java - 为什么在 T 是类型参数而 t 是变量的情况下不允许使用 "t instanceof T"?

Eclipse表示由于泛型类型橡皮擦,类型参数不允许使用instanceof操作。我同意在运行时不会保留任何类型信息。但是请考虑以下类的通用声明:classSomeClass{Tt;SomeClass(Objecto){System.out.println(oinstanceofT);//Illegal}}在运行时,不会出现T!但是如果我实例化这个Integer类型的类,那么对应的对象就会有一个Integer类型的字段t。那么,为什么我不能用T检查一个变量的类型,它可以在运行时被Integer替换。我实际上会做类似“oinstanceofInteger”的事情。在哪些情况下,允许带有类

java - Java泛型有没有办法模仿OR

编辑:我改变了一些例子来获得这个想法:喜欢...无需创建通用接口(interface)并为Integer和Float创建子类来实现它如果没有,这样的事情可能更有意义并且更有用如果?是一个通配符,为什么我们不允许限制某些类型? 最佳答案 这是不可能的,我几乎看不到它有任何值(value)。您使用泛型来限制类型,例如在集合中。使用or运算符,您对类型的了解与对它们两者最具体的父类(superclass)型的了解一样多,在本例中为Object。那么为什么不直接使用Object呢?假设的:Listlist=//...list.get(0)的

java - 为什么和什么是多态泛型类型

什么时候应该使用像这样的通用多态类型,它的含义是什么?1.Listlist=newArrayList();2.Listlist=newArrayList();3.Listlist=newArrayList();有人会使用类似的东西吗Listlist=newArrayList();Listlist=newArrayList();笔记:我理解人们何时使用List或List在方法定义中。但我不明白的是多态泛型类型对象的创建。 最佳答案 其原因是基于Java如何实现泛型。数组示例使用数组你可以做到这一点(数组是协变的)Integer[]my

java - 在 Scala 中实现多级 Java 接口(interface)

我的interface在java中有以下层次结构publicinterfaceIdentifiable>extendsSerializable{publicTgetId();}publicinterfaceFunctionextendsIdentifiable{publicStringgetId();}publicabstractclassAdapterimplementsFunction{publicabstractStringgetId();}当我尝试在scala中实现Adapter时,如下所示classMultiGetFunctionextendsAdapter{defgetId

java - Guava 为什么 toStringFunction 不是泛型函数?

GuavatoStringFunction()具有以下声明:publicstaticFunctiontoStringFunction(){...}Object的所有非原始根,因此该函数运行良好。但是当我尝试将它与另一个函数组合时,例如:Functionf1=Functions.compose(Functions.forMap(someMap),Functions.toStringFunction());其中someMap变量是一个map,所以我希望toStringFunction将Integer转换为String,然后forMap将String转换为Double。但是我得到一个编译器错

Java:通过返回供应商与返回新实例来实例化泛型类型

我正在阅读如何实例化一个泛型,在阅读和应用之后thisanswer;我想知道期待Supplier之间的区别是什么与期待T的新实例相比.例子:abstractclassAbstractService{protectedSuppliermakeNewThing();//supplierisexpectedpublicTmyMethod(){Tobject=makeNewThing().get();//localobjectbycallingsupplierobject.doStuff();returnobject;}}classCarServiceextendsAbstractServic

java - 在 Java 中迭代任何类型的泛型数组

如果有一个JavaCollection实例可能带有原始类型、泛型数组和/或可迭代集合,我想将泛型数组视为可迭代集合,但如何处理?例如以下伪java代码Listlist1;list1.add(newint[2]);list1.add(newString[3]);list1.add(newArrayList());for(Objecte:list1){if(einstanceofIterable){//Theint[2]andString[3]willnotfallinthiscasethatIwantitbe//Iteratewithine}}请指教如何使int[2]和String[3]

java - Map<?, ?> 在 Java 中是什么意思?

什么是Map在Java中是什么意思?我在网上看过,但似乎找不到任何关于它的文章。编辑:我在MP3DurationJava上找到了这个 最佳答案 Map意味着在编译时,你不知道Map的键值对象的类类型是什么。它是一个通配符类型。http://download.oracle.com/javase/tutorial/extra/generics/wildcards.html 关于java-Map在Java中是什么意思?,我们在StackOverflow上找到一个类似的问题: