草庐IT

java - Java泛型的不兼容类

看来我又被java泛型困住了。这是我所拥有的:几个类:classCoolIndeximplementsEntityIndexclassCoolEntityextendsBaseEntity使用上面的类枚举:enumEntities{COOL_ENTITY{@Overridepublic>ClassgetIndexCls(){returnCoolIndex.class;}@OverridepublicClassgetEntityCls(){returnCoolEntity.class;}}publicabstract>ClassgetIndexCls();publicabstractCl

java - 在 Java 中扩展 T 和 SomeInterface<T>

我想创建一个带有两个参数的类。一个应该简单地输入为T。另一个应该输入为同时扩展T和SomeInterface的内容。.当我尝试使用publicclassSomeClass&T>然后Java提示“类型T不是接口(interface);它不能指定为有界参数”如果相反,我尝试为S创建一个接口(interface)publicinterfaceTandSomeInterfaceextendsSomeInterface,T然后Java提示“不能将类型参数T引用为父类(superclass)型”有没有办法在Java中做到这一点?我想你可以用C++来做...? 最佳答案

java - 什么时候需要 Some<E extends Some<E>> 而不是 Some<E extends Some>?

注意:这个问题与Enum无关,所以它不是重复的。Enum被迫只与自身比较,因为编译器生成类型参数,而不是因为java递归类型参数。我试图找到将类声明为的优势:publicclassSome>与声明为:publicclassSome我尝试提供返回E的方法和方法返回Some,复杂类层次结构中的不同交叉调用以及每次我试图删除额外的-没有出现新的错误/警告。你能告诉我一个方法来证明这个额外的的优势吗??由于JDK声明,我假设存在一个:>对SO上其他问题的回答例如:Withtheadditionalconstruct,youknowthatanyclassthatextendsEnumiscom

java - 根据值对 map 进行排序的通用方法

我有一个小程序,可以根据map的值对map进行排序。这是我目前所拥有的:publicstatic>MapsortByValues(finalMapmapToSort){List>entries=newArrayList>(mapToSort.size());entries.addAll(mapToSort.entrySet());Collections.sort(entries,newComparator>(){publicintcompare(finalMap.Entryentry1,finalMap.Entryentry2){returnentry1.getValue().comp

java - 扩展由另一个类实例化的类

我正在使用一个JavaAPI,该API用于“宏”,可自动执行一个软件。API具有类Simulation(一种全局状态)和FunctionManager。我无法修改这些类。我想制作一个BetterFunctionManager类,它extendsFunctionManager因为后者缺少一些有用的功能。但是我不知道该怎么做,因为不能直接实例化FunctionManager。它必须从Simulation中获取,如下所示:Simulationsimulation=getCurrentSimulation();FunctionManagerfunctionManager=simulation.

java - 在注释中支持 "Extendable enums"的最佳方式?

在我的图书馆里有一个“用户级别”的概念。我提供了几个默认级别,但出于各种原因,我想为用户提供使用他们自己的级别的选项。目前这是实现为publicinterfaceAdminLevel{publicvoidname();}publicenumStandardAdminLevelsimplementsAdminLevel{ADMIN,ANONYMOUS}问题是用户通常会在注释中传递他们所需的用户级别。我尝试过但失败的事情:使用AdminLevel作为类型-因“注释成员类型无效”而失败使用String作为类型,但使用StandardAdminLevels.ADMIN.name()设置值-失败

java - 泛型 - (elements instanceof List<? extends Comparable>) 的合法替代品

我有一个唯一参数(Listelements)将元素设置为ListModel的方法,但我需要进行验证以查看通用类型是否实现了可比性,因为这样的事情:if(elementsinstanceofList)是非法的,我不知道如何进行正确的验证。更新我已经使用以下方法完成了此验证:(elements.size()>0&&elements.get(0)instanceofComparable)但我想知道是否有更清洁的解决方案,例如使用反射?提前致谢。 最佳答案 列表的通用类型是erasedatruntime.为此,您需要在方法签名中要求参数或单

Java泛型和继承递归

我遇到了以下使用泛型和继承的Java代码。我真的不明白以下代码片段的作用:classA>{...}这段代码有什么作用?(我从DBMakerinMapDB得到的) 最佳答案 几乎很清楚,问题实际上分为两部分:1)为什么BextendsA?2)为什么A里面BextendsA具有通用类型B?这些部分的答案是:1)在特定示例中,此类(A)是builder类(称为DBMaker),因此其大部分方法返回某种类型,该类型扩展了此构建器的类类型。这就解释了,为什么B应该扩展A类。2)但是,实际上,如果我们将隐藏第二部分...extendsA,我们只

java - <U, T extends U> 和 <T, U super T> 不一样吗?

我对以下两个方法声明感到困惑:privateTfunWorks(Tchild,Uparent){//Nocompilationerrors}privateTfunNotWorks(Tchild,Uparent){//compilationerrors}难道上面两个都不是有效的吗?类比如果U是T的父级,则T是U的子级。那为什么第二个会报编译错误呢?编辑:我认为,TextendsT和TsuperT都是有效的。对吧? 最佳答案 类型参数(您的示例)只能使用扩展(JLS#4.4):TypeParameter:TypeVariableType

返回 Class<T extends Somethng> 实例的 java 方法

我有这个代码:publicClassgetScrapper(){returnMyScrapper.class;}MyScrapper是一个实现Scrapper的类界面。为什么这不起作用?你在JDK7中遇到以下错误:error:incompatibletypesrequired:Classfound:ClasswhereTisatype-variable:TextendsScrapperdeclaredinmethodgetScrapper()附言老实说,我已经尝试搜索整整30-40分钟。更新:如果我将方法声明为publicClassgetScrapper(){有用。但我仍然不明白为什么