草庐IT

Generics

全部标签

java - 在类中实现时保留泛型

我对一般类型的问题进行了大量搜索,但没有找到任何可以帮助我弄清楚我在这里做错了什么的东西。我的界面如下:publicinterfaceSortAnalysis>{publiclonganalyzeSort(ArrayListlist);}现在,下一步是创建一个实现此接口(interface)的类。这个特定的类将使用插入排序,我需要保持ArrayList类型“E”的通用性,所以我尝试了各种方法并最终得到以下结果:publicclassInsertionSort>implementsSortAnalysis{@OverridepubliclonganalyzeSort(ArrayListl

Java 泛型枚举子类型化接口(interface)

给定以下设置:publicclassTestType{publicstaticvoidmain(String[]args){Listlist=newArrayList();accept(list);//Doesnotcompile}staticvoidaccept(Iterablevalues){for(MyInterfacevalue:values){value.doStuff();}}}interfaceMyInterface{TdoStuff();}enumConstantsimplementsMyInterface{ONE,TWO,THREE;@OverridepublicIn

java - 这三个参数化变量有何不同?

给定AGenericClass声明如下:publicclassAGenericClass{Tsubject;publicvoidsetSubject(Tsubject){this.subject=subject;}}变量a、b和c之间有什么区别?AGenericClassa=newAGenericClass();AGenericClassb=newAGenericClass();AGenericClassc=newAGenericClass();a.setSubject("L");//OK.b.setSubject("M");//Error:setSubject(capture)can

java - 如何将相似的 Java 函数合并为一个(在 C++ 中我会使用模板)

在我的一个Java类中,我有这两个非常相似的功能。Java中有没有一种方法可以将它们组合成一个函数,这样我就不必维护2个函数?publicstaticbooleanareValuesValid(double[]values,intnumElements){if(values==null||values.length!=numElements){returnfalse;}for(inti=0;i 最佳答案 您的问题在某些方面对Java来说很棘手:double和float是原始类型,因此它们不是类层次结构的一部分。包装器Double和F

java - 如何将我的方法更改为通用方法?

现在我写了一个通用的方法从一个键中获取JSONObject数据。如何将其更改为泛型方法?现在我每次调用该方法时都必须更改类型。Stringa=(String)ObdDeviceTool.getResultData(result,"a",String.class);Doubleb=(Double)ObdDeviceTool.getResultData(result,"b",Double.class);publicstaticObjectgetJSONObjectData(JSONObjectresult,Stringkey,Objecttype){if(result.containsKe

java - 在也实现相同类的基类中使用泛型的好处

我最近在我未编写的代码中遇到过这种情况,虽然这种方法可能有一些设计上的好处,但我似乎无法从自己的大脑中挤出这种基本原理。所以在我看起来很愚蠢之前,我希望能在这里得到一些反馈。服务接口(interface)是这样的:publicinterfaceService{...}然后,一个基类添加了对Service接口(interface)的通用引用,其中T扩展了Service,但随后整个基类也实现了该接口(interface)。像这样:publicclassServiceBaseimplementsService{...}你为什么要这样做?我注意到在实践中,ServiceBase的扩展总是使用与

Java:创建一个简单的通用方法以在应用过滤器后进行计数

我想创建一个简单的通用方法来计算numbers根据提供的predicate应用过滤器后.staticintcount(Collectionnumbers,Predicatepredicate){returnnumbers.stream().filter(predicate).count();}它给我以下错误:incompatibletypes:PredicatecannotbeconvertedtoPredicatewhereCAP#1,CAP#2arefreshtype-variables:CAP#1extendsNumberfromcaptureof?extendsNumberCA

java - Java 中的通用 protobuf 反序列化器

我正在尝试编写一个可用于反序列化/解析任何protobuf消息的通用java类。代码在完美世界中应该是这样的:publicabstractclassProtoDeserializer{publicTdeserialize(finalbyte[]bytes)throwsException{Parserparser=T.getParserForType();//SyntaxError:thismethodisnotstatic!Tmessage=parser.parseFrom(bytes);validate(message);returnmessage;}publicabstractvo

java - 泛型 - 编译器不一致 [jdk 1.8.0_162]

我遇到了泛型问题,这让我对编译器实际如何处理泛型类型感到困惑。请考虑以下事项://simpleinterfacetomakeitaMCVEstaticinterfaceA{publicFgetF();publicSgetS();}staticComparator>wrap(Comparatorc){return(L,R)->c.compare(L.getS(),R.getS());}以下将无法编译,因为在调用thenComparing时,两种泛型类型都被简化为Object:Comparator>c=wrap((L,R)->Integer.compare(L,R)).thenCompar

java - Hibernate 如何在@OneToMany 映射中找到集合的泛型类型?

给定一个简单的实体关系:@EntitypublicclassSingle{@OneToManypublicSetmultiples;}Hibernate如何发现倍数的泛型类型是Multiple?使用标准反射API无法找到此信息。我正在查看源代码,但真的不知道从哪里开始。 最佳答案 但是可以使用反射API找出答案。看看Field.getGenericType():Typetype=field.getGenericType();if(typeinstanceofParameterizedType){Type[]genericArgume