草庐IT

method-reference

全部标签

java - 在构造方法引用中,使用泛型类型参数和不使用泛型类型参数的区别?

我正在阅读EffectiveJava3并注意到第43项中的这段代码:“首选对lambda的方法引用”:TreeMap::new注意类型参数。我总是刚刚完成:TreeMap::new我使用Intellij并且从未收到过关于此的警告或任何更改它的建议。事实上,当我让IDE将上述方法引用更改为lambda时,它会将其转换为()->newTreeMap()包含类型参数的值(value)是什么?编译器不能根据变量的类型参数推断出来吗?根据IDE如何将方法引用转换为lambda,它似乎可以。 最佳答案 构造函数引用TreeMap::new与使用

Java/Scala 反射 : Get class methods in order and force object init

我有一个类,其中有一些对象作为内部方法。我也问了thisquestion不久前得到了一个很好的答案,但这会导致servlet容器中出现fatalerror。当URLClassLoader请求类时,Scala无法始终如一地生成TypeTag。有问题的项目是开源的,找到here.目前找到的方法是here,但它不保留顺序。对象成员已正确初始化,但顺序是随机的。问题:如何收集类(class)成员:按照定义的顺序以线程安全的方式按父类(superclass)型过滤它们贪心初始化对象(引用module.instance)?更新:不要根据此处的链接建议答案,它们已经过测试并且已知会失败。出于风格原因

Java 泛型 : How does method inference work when wildcard is being used in the method parameters?

假设我有以下内容:classx{publicstaticvoidmain(String[]args){Lista=newLinkedList();Listb=newLinkedList();Listc=newLinkedList();abc(a,"Hello");//(1)Errorabc(b,"Hello");//(2)Errorabc(c,"Hello");//(3)okdef(b);//(4)ok//ShowinginferenceatworkInteger[]a={10,20,30};//(5)Tisinferredtobe?extendsObjectMethodsignatu

java - 名称冲突 : The method add(Object) of type test2 has the same erasure as add(E) of type HashSet<E> but does not override it

导入java.util.*;classAextendsHashSet{publicbooleanadd(Objectobj){//compilererrorreturntrue;}}orclassAbc{publicvoidadd(Tt){}//compilererrorpublicvoidadd(Objecti){}//compilererror(can'toverload?)}错误:名称冲突:test2类型的方法add(Object)与HashSet类型的add(E)具有相同的删除,但没有覆盖它我不知道上述错误背后的概念是什么,有人可以建议我在哪里可以研究这个概念吗?

Java 泛型 : Illegal forward reference

给定一个通用接口(interface)interfaceFoo{}我想写一个实现,要求A是B的子类,所以我想做classBarimplementsFoo{}//-->Syntaxerror或classBarimplementsFoo{}//-->illegalforwardreference但似乎唯一可行的解​​决方案是:classBarimplementsFoo{}这有点难看,因为它颠倒了通用参数的顺序。此问题是否有任何解决方案或解决方法? 最佳答案 因为这在Java中是不可能的,所以试着想想Bar不同。当您为Bar声明一个变量时

java - 类型安全 : The method. 。属于原始类型。对泛型的引用应该被参数化

Eclipse给了我警告(在标题中),在一个工作项目中只使用以下代码,除了一个虚拟类和一个主要方法之外什么都没有:Lista=newArrayList();Listb=newArrayList();intx=19;a.add(x);最后一行触发警告。我不确定我在这里做错了什么,或者真的,我什至在做什么。我是一名遵循可疑教程的Java学生,我正在尝试理解泛型。据推测,变量x不说明类型安全。我尝试将它转换为Object类型(我认为它什么都不做,因为它已经是)但它没有用。我该如何解决这个警告? 最佳答案 您已声明Lista没有类型参数。这

java - 使用方法引用与 lambda 时,堆栈跟踪的可导航性是否较低?

我刚刚在Eclipse中进行了快速试验。publicclassStackTractTest{staticclassNasty{publicIntegertoInt(){if(1==1)thrownewRuntimeException();return1;}}@TestpublicvoidmethodReference(){Stream.of(newNasty()).map(Nasty::toInt).findFirst();}@Testpublicvoidlambda(){Stream.of(newNasty()).map(n->n.toInt()).findFirst();}}当方法

java - Java 方法引用中表达式的运行时评估

在Run-TimeEvaluationofMethodReferences部分在Java语言规范中提到:Atruntime,evaluationofamethodreferenceexpressionissimilartoevaluationofaclassinstancecreationexpression,insofarasnormalcompletionproducesareferencetoanobject.Evaluationofamethodreferenceexpressionisdistinctfrominvocationofthemethoditself.First,

java - 创建将调用父类(super class)方法的非捕获方法引用

我正在尝试重构以下代码:classBase{privateObjecta,b,;//there'slike10oftheseattributesofdifferenttypepublicObjecta(){returna;}publicObjectb(){returnb;}//moregettersliketheonesabove}classRootNodeextendsBase{}classBranchNodeextendsBase{privateRootNoderoot;//passedviaconstructorpublicObjecta(){Objectvalue=super.

java - Eclipse 中的错误 : The method . .. 来自类型 ... 指的是缺少的类型条目

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我正在尝试使用一个使用Entry对象的函数,但我收到了上述错误消息。该函数如下所示:publicEntryinsert(Kk,Vv)throwsInvalidKeyException{//codehere}我尝试导入java.util.*但没有成功。有人可以向我解释此错误消息告诉我的内容以及如何解决吗?