草庐IT

Generics

全部标签

java - Guava 库的 Lists.newArraylist() 是如何工作的?

我想了解Lists.newArrayList()如何知道要返回的列表类型。我看到了sourcecode对于函数newArrayList(),但它只是返回泛型E的ArrayList。publicstaticArrayListnewArrayList(){returnnewArrayList();}但是,当我调用该函数时,我不会传递任何此类信息。ListtestList=Lists.newArrayList();它怎么知道我想要什么类型的ArrayList?我阅读了有关泛型和TypeToken的内容,但无法通过代码与之相关。 最佳答案

java - 花哨的泛型捕获碰撞

请给我一个关于这里发生的事情的提示:Lista=newArrayList();Listb=newArrayList();a.addAll(b);//ouch!compileryellsatme,seetheblockbelow:/*incompatibletypesfound:java.util.Listrequired:java.util.List*/这段简单的代码无法编译。我依稀记得一些与类型捕获有关的东西,比如那些应该主要用于接口(interface)规范,而不是实际代码,但我从来没有像那样傻眼。这当然可以像那样暴力修复:Lista=newArrayList();Listb=ne

Java泛型

我想实现一个方法,该方法将Object作为参数,将其转换为任意类型,如果失败则返回null。这是我到目前为止所拥有的:publicstaticvoidmain(String[]args){MyClassa,b;a=Main.staticCast(newString("B"));}publicstaticclassMyClass{}publicstaticTstaticCast(Objectarg){try{if(arg==null)returnnull;Tresult=(T)arg;returnresult;}catch(Throwablee){returnnull;}}不幸的是,类转

java - 这个类声明在 Java 中是什么意思?

我只学习树,我不明白的一件事是类声明:例如:类BinarySearchTree>.现在,你能解释一下括号中的内容和“”吗?有什么好的资源可以推荐给我吗?谢谢。 最佳答案 这声明了一个具有单个泛型类型参数的类。由于对于二叉搜索树来说,它必须能够比较两个项目,因此需要指定这一点,以便编译器可以验证它。尖括号里的部分是类型参数T和它的约束说:随便T是,它应该扩展Comparable(>)。说Comparable应该能够将自己与T进行比较或T的父类(superclass)()。自T通常可以是任何将选择限制为对其实现搜索树有意义的类型的任何东

java - 我无法编译 hamcrest hasKey() 方法

这是代码:Mapmap;org.hamcrest.MatcherAssert.assertThat(map,org.hamcrest.Matchers.hasKey(newFoo()));这是编译器的意思:cannotfindsymbolmethodassertThat(java.util.Map,org.hamcrest.Matcher>)为什么以及我能做什么? 最佳答案 我怀疑你需要这样的东西:MatcherAssert.assertThat(map,Matchers.hasKey());这样您就可以为hasKey方法调用指定值

java - 为什么在 Java 中使用泛型?它与重载有何不同?

我想用Java编写单个方法add(),它可以添加整数、字符串等。IsGenerics会帮助我。我无法理解泛型的最终目标。我很困惑。泛型与重载?publicIntegeradd(Integeri,Integerj){returni+j;}publicStringadd(Stringi,Stringj){returni+j;}publicTadd(Ti,Tj){returni+j;}//thisgivesmeerror.请让我离开。谢谢。 最佳答案 Generics可以帮助,这里的问题是+操作只为java基元和String定义,而不是为

Java 泛型类型参数

这个问题在这里已经有了答案:Getgenerictypeofjava.util.List(15个答案)关闭3年前。我有一个方法需要List作为论点。publicstaticStringmethod(Listarg){//Dosomethingbasedontypeofthelist}//IcallthemethodasbelowListlistA=newArrayList();ListlistB=newArrayList();method(listA);method(listB);在method,我怎么知道arg是List的ClassA或List的ClassB?

java - 如何创建一个通用的 HashMap 来插入集合和对象?

如何实例化一个HashMap来放置集合和对象?//it'swrongMapparams=newHashMapListlstperson=getPerson();params.put("person",lstperson);params.put("doc",objectDoc);params.put("idSol",newLong(5));service.method(params);//methodpublicvoidmethod(Mapparams); 最佳答案 将HashMap声明为Mapparams=newHashMap();

java - < 和 > 是什么意思,比如 implements Comparable<BigInteger>?

在Java1.4.2,类java.math.BigInteger实现接口(interface)Comparable,Serializable.在Java1.5.0,类java.math.BigInteger实现接口(interface)Serializable,Comparable.这只是一个例子,帮我问一下和>.我真正想知道的是和>东西。我的问题有三个:是什么意思implements的一部分声明是什么意思?这种语法叫什么?它有什么作用?附:真的很难用谷歌搜索和>并且不可能在SO中搜索和>首先。谢谢! 最佳答案 阅读JavaGene

java - 奇怪的 Java 泛型

这是什么意思?HashBiMapcharOcc=HashBiMap.create(); 最佳答案 create()是一种通用方法。因为它是静态的并且没有参数(因此没有类型推断),所以你可以告诉它通用参数是什么的唯一方法是通过那个看起来很奇怪的.。语法。编辑:在这种特定情况下实际上没有必要;编译器可以从左侧推断泛型类型。但在其他情况下有时是必要的,比如这个问题:GenericmethodinJavawithoutgenericargument 关于java-奇怪的Java泛型,我们在Sta