草庐IT

Generics

全部标签

java - 通用继承和调用 GetMethod().getReturnType()

在我当前的项目中,我有如下建模的类。在某些时候,getReturnTypeForGetId()类的方法在类A和B上被调用。使用A调用方法会按预期返回Integer,但B会返回Serializable。我在这里错过了什么?我是被一些令人发指的删除事情咬伤了,还是只是错过了某种通用的上下文破坏?编辑:向B添加一个覆盖的getId()方法解决了这个问题,但我仍然想了解我我遇到了。importjava.io.Serializable;publicclassWeirdTester{staticinterfaceIdentifiable{TgetId();voidsetId(finalTid);}

java - 为什么我们可以使用具有泛型引用的数组

在此处回答相关问题时:https://stackoverflow.com/a/9872630/82609我尝试执行以下操作:Comparator[]comparators=newComparator[]{...};有效!但以下不是:Comparator[]comparators=newComparator[]{...};关于相关问题,我做了以下假设:Iguessit'sbecauseinitiallythearraycontractmaybesomethinglikethis:IfyoucreateanarrayoftypeX,youwillNEVEREVERbeabletoputan

java - java中有通用的名称值对吗?

Java中是否有任何通用的名称值对之类的东西?我需要类似的东西Queue>存储名称值对字符串值的队列。 最佳答案 commons-lang提供了一个Pair。参见http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/tuple/Pair.html编辑:更新了url,因为它被破坏了 关于java-java中有通用的名称值对吗?,我们在StackOverflow上找到一个

java - 泛型和( super ?)类型标记可以帮助构建类型安全的新闻聚合器吗?

我有这个基本的News界面interfaceNews{StringgetHeader();StringgetText();}和像SportsNews这样的具体类和FinancialNews提供特定方法,如getStockPrice(),getSport()等等。新闻旨在发送给interfaceSubscriber{voidonNews(Nnews);}问题是如何注册和维护订阅。我尝试的第一种方法是使用中央Aggregator,在Class之间保留map对象和Set>,但很快这种方法就显露出行不通了。这是所需的APIpublicclassAggregator{publicvoidsubs

java - 从不同地方调用时不能在方法参数中使用 List<Future<?>>

在我的代码中,我有多个List>实例我想要一个单一的方法来处理等待它们完成的过程。但是我得到一个编译器异常,告诉我actualargumentList>cannotbeconvertedtoList>.这是方法头:publicvoidwaitForIt(>params)这就是它的名字:...List>actions=newArrayList>();waitForIt(actions);我需要这个来为List>>工作以及其他几个。 最佳答案 使用这个:publicvoidwaitForIt(List>params)当你有List和Li

java - 如何理解 Java 泛型的这种用法

在我的学习书中,有这个例子:importjava.util.*;publicclassRentalGeneric{privateListrentalPool;privateintmaxNum;publicRentalGeneric(intmaxNum,ListrentalPool){this.maxNum=maxNum;this.rentalPool=rentalPool;}publicTgetRental(){returnrentalPool.get(0);}publicvoidreturnRental(TreturnedThing){rentalPool.add(returnedT

JAVA 和泛型类型问题

我遇到了泛型类型的问题:publicstaticclassField{privateClassclazz;publicField(Classclazz){this.clazz=clazz;}}publicstaticvoidmain(String[]args){//1.(warning)Iterableisarawtype.ReferencestogenerictypeIterableshouldbeparameterized.newField(List.class);//2.(error)TheconstructorMain.Field>(Class)isundefined.newF

java - 为什么类型推断算法会尝试找到最具体的类型?

来自Oracle'sdocumentationofTypeInferenceTypeinferenceisaJavacompiler'sabilitytolookateachmethodinvocationandcorrespondingdeclarationtodeterminethetypeargument(orarguments)thatmaketheinvocationapplicable.Theinferencealgorithmdeterminesthetypesoftheargumentsand,ifavailable,thetypethattheresultisbein

java - 不能将 A[T] 隐式转换为 AT,其中 A[T] 扩展 AT

问题与Java和Scala之间的集成有关。我对它进行了一些简化以使事情更清楚。我有两个用Java编写的类:classA{}classATextendsA{}在Java中,我有一个以下列方式使用类的方法:publicAa(){returnnewAT();}我想在scala中做同样的事情。但是下面的代码无法编译。defa():A[Boolean]={returnnewAT();}消息说:“类型不匹配;发现:需要org.rarry.sample.AT:org.rarry.sample.A[Boolean]”谁能解释为什么会这样,以及如何去做? 最佳答案

java - 在 Java 中将泛型类型与枚举相关联

我正在为用户偏好创建一个商店,用户可以为固定数量的偏好设置值。首选项(设置)的名称存储为枚举:publicenumUserSettingName{FOO,BAR,ETC}我希望能够做的是存储一个带有名称的值类型,以便服务将使用正确的Java类型存储用户的值。例如,FOO可能是Long,而BAR可能是String。到目前为止,我们将所有值存储为String,然后手动将这些值转换为适当的Java类型。这导致到处都是try/catchblock,而在服务中只有一个try/catch更有意义。我知道枚举不能有通用类型,所以我一直在玩:publicenumUserSettingName{FOO(