草庐IT

Generics

全部标签

java - 自界泛型

这些泛型之间有什么实际区别吗publicclassSelfBounded>{}还有这个publicclassSelfBounded{}?如果是,那我该如何观察它们呢? 最佳答案 这里已经有很多类似的问题了。您可以阅读以下article或以下问题:JavaEnumdefinitionWhyinjavaenumisdeclaredasEnum>WhatwouldbedifferentinJavaifEnumdeclarationdidn'thavetherecursivepart 关于jav

java - 原始类型成员的通用类型丢失

我在使用泛型时发现了一个奇怪的行为。在本类(class)中Foo,strings成员(member)与T无关:packagetest;importjava.util.ArrayList;publicclassFoo{ArrayListstrings;TgetSome(){returnnull;}}该类在main中使用:packagetest;publicclassMain{publicstaticvoidmain(){FoointFoo=newFoo();Integeri=intFoo.getSome();Strings1=intFoo.strings.get(0);FoorawFoo

java - 从接口(interface)覆盖通用返回类型

我有几个接口(interface):publicinterfaceEndpoint{publicClassgetFetchableType();}publicinterfaceFetchable{...fetcheddatafields}publicinterfaceFetcher{publicTfetch(Endpointendpoint);}对于实现Fetcher的类,为什么编译器使用这个方法声明:publicFetchableImplfetch(Endpointendpoint){returnnull;}虽然这些都是不正确的声明:publicFetchableImplfetch(

java - 为什么 Java 8 泛型类型推断选择这个重载?

考虑以下程序:publicclassGenericTypeInference{publicstaticvoidmain(String[]args){print(newSillyGenericWrapper().get());}privatestaticvoidprint(Objectobject){System.out.println("Object");}privatestaticvoidprint(Stringstring){System.out.println("String");}publicstaticclassSillyGenericWrapper{publicTget()

java - 编码技巧 - 交集类型和 Java 枚举

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭9年前。Improvethisquestion交集类型允许您(有点)做具有继承层次结构的枚举。您不能继承实现,但可以将其委托(delegate)给辅助类。enumFoo1implementsBar{}enumFoo2implementsBar{}classHelperClass{static&Bar>voidfooBar(Ttheenum){}}当您有许多实现某种模式的不同枚举时,这很有用。例如,一些具有父子关系的枚举对。enumPrimar

java - 具有相同删除的两种方法不一定是等效的(或者它们之间的签名不是子签名)?

我正在阅读一本关于jdk6的令人难以置信的书“javascjp认证程序员指南”,其中有一节是关于泛型覆盖的。它描述了子签名和覆盖等价物,并描述了我引用的一些覆盖等价物的例子:Giventhefollowingthreegenericmethoddeclarationsinaclass:staticvoidmerge(MyStacks1,MyStacks2){/*...*/}staticvoidmerge(MyStacks1,MyStacks2){/*...*/}staticvoidmerge(MyStacks1,MyStacks2){/*...*/}Aftererasure,thesi

javac中java自类型递归类型参数和继承错误

为什么这段代码不能编译?publicclassx{privatevoidtest(){handle(newThingA());handle(newModifiedThingA());}private,XextendsT>java.util.Listhandle(Xobject){returnobject.getList();}privatestaticclassBaseThing>{publicjava.util.ListgetList(){returnnull;}}privatestaticclassThingAextendsBaseThing{}privatestaticclass

java - 好的泛型设计

我有一个设计问题。下面是时间戳接口(interface)/***TypeofTimestamp.Forex:Date,long,Calendaretc**/publicinterfaceTimeStampextendsComparable>{/***Returnsthetimestamp.*@return*/publicTgetTimeStamp();}我基本上想要一个List只能包含时间戳的类。在列表中添加任何内容基本上取决于时间戳。我的List类声明应该如何。如果我决定组合,代码将如下所示:publicclassTimeListimplementsList>{privateList

java - 泛型益智游戏

我想弄清楚如何让泛型跳过障碍。我有:interfaceRoot{}interfaceMiddleextendsRoot{}classTypeimplementsRoot{}还有许多“子类型”类:classSubtype1extendsTypeimplementsMiddle{}classSubtype2extendsTypeimplementsMiddle{}...我想要的是声明一个有两个类型参数T和S的类,其中T被Type和S由T和Middle绑定(bind)。我看不出有什么方法可以确保S扩展T并实现Middle。我想要的是这样的:classHandler;或classHandler

java - 继承泛型接口(interface)的子类

我有一个接口(interface)可以确保对象可以复制自己:publicinterfaceDuplicable>{publicTduplicate();}我现在有classXimplementsDuplicable但我还有一个扩展X的类Y。这不是问题,直到我需要另一个泛型类:publicclassDoStuffWithDuplicable>我不能通过Y使用DoStuffWithDuplicable的通用版本,因为它没有实现Duplicable但是Duplicable因为它继承自X。所以我试过了publicclassDoStuffWithDuplicable>..但这意味着稍后会引入不安