method-reference相关内容
考虑JLS的以下文章(§15.13.1) 如果以标识符结尾的方法引用表达式满足以下所有条件,则它是精确的: 如果方法引用表达式具有ReferenceType::[TypeArguments]标识符格式,则ReferenceType不表示原始类型。 要搜索的类型正好有一个成员方法,其名称标识符可由出现方法引用表达式的类或接口访问。 此方法不是变量(§8.4.1)。 如果此方法是泛型
..
我正在执行一个示例,该示例从与下面提到的方法引用相关的当前目录中提取隐藏文件数组 使用匿名内部类实现 File[] hiddenFiles = new File(".").listFiles(new FileFilter() { public boolean accept(File file) { return file.isHidden();
..
我正在寻找一种通过引用传递方法的方法.我知道 Java 不会将方法作为参数传递,但是,我想找一个替代方案. 有人告诉我,接口是作为参数传递方法的替代方法,但我不明白接口如何通过引用充当方法.如果我理解正确,接口只是一组未定义的抽象方法.我不想发送一个每次都需要定义的接口,因为几个不同的方法可以调用相同的方法,但参数相同. 我想要完成的是类似这样的事情: public void set
..
除了后者的可读性稍好之外,使用以下构造有什么不同吗? someList.stream().map(item -> new NewClass(item)).collect(Collectors.toList());someList.stream().map(NewClass::new).collect(Collectors.toList()); 解决方案 一般没有区别.NewClass::ne
..
..
Sonar 告诉我“用方法引用替换这个 lambda" 公共类 MyClass {私有列表createSomeValues(ListanyList) {返回任何列表//.溪流()//.map(anything -> createSomeValue(anything))//.collect(Collectors.toList());}私人 SomeValu
..
import java.util.function.Function;公共课操场{公共静态无效主(字符串 [] args){对象 o = 空;System.out.println(o);函数toStringFunc = Object::toString;String s = toStringFunc.apply(o);System.out.println(s);}} 此代码将导致抛出 NullP
..
我正在阅读有关 Java 8 功能的信息,这使我想到了这个 文章 ,我想知道构造函数引用的实际用途,我的意思是为什么不直接使用 new Obj ? P.S,我试过谷歌搜索,但我没有找到有意义的东西,如果有人有代码示例、链接或啧啧,那就太好了 解决方案 首先,你应该明白构造函数引用只是方法引用的一种特殊形式.方法引用的要点在于它们不调用被引用的方法,而是提供了一种定义函数的方法,该函数
..
我正在学习如何使用流,但我在使用此方法时遇到了问题. public static String[] inArray(String[] array1, String[] array2) {返回 Arrays.stream(array1).filter(str -> Arrays.stream(array2).anyMatch(s -> s.contains(str))).distinct().so
..
我刚刚在我们的生产环境中遇到了相当不愉快的经历,导致 OutOfMemoryErrors: heapspace.. 我将问题追溯到我在函数中使用 ArrayList::new. 为了验证这实际上比通过声明的构造函数(t -> new ArrayList())创建的性能更差,我编写了以下小方法: public class TestMain {公共静态无效主(字符串 [] args)
..
当我想引用当前作用域中的方法时我仍然需要在 :: 之前指定类名(对于静态方法)或 this操作员.例如,我需要写: import java.util.stream.Stream;公共类流测试{公共静态 int trimmedLength(String s) {返回 s.trim().length();}公共静态无效主(字符串 [] args){System.out.println(Stream.
..
我想知道所有这些带有方法引用和功能接口的东西是如何在较低级别上工作的.最简单的例子是我们有一些 List Listlist = new ArrayList();list.add(“b");list.add(“a");list.add("c"): 现在我们想用 Collections 类对它进行排序,所以我们可以调用: Collections.sort(list, String::compar
..
在 Java 8 中有“方法引用"功能.其中一种是“引用特定类型的任意对象的实例方法" http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html#type 有人能解释一下在这种情况下“特定类型的任意对象"是什么意思吗? 解决方案 它是对某种类型的实例方法的引用.在这个例子中,compareT
..
..
我对内部类和 lambda 表达式有些困惑,我试着问一个 问题 ,但随后又出现了另一个疑问,与评论前一个问题相比,发布另一个问题可能更好. 直截了当:我知道(谢谢乔恩) 这样的东西不会编译 public class Main {公共静态无效主(字符串 [] args){一一=新一();F f = new F(){//1public void foo(){one.bar();}//编译错误}
..
假设有一个典型的 Java Bean: class MyBean {无效集A(字符串ID){}void setB(String id) {}列表获取列表(){}} 我想在 BiConsumer 的帮助下创建一种更抽象的调用 setter 的方法: Map>地图 = ...map.put(SomeEnum.A, MyBean::setA);map.put(SomeEnum.B, MyBean:
..
我无法理解方法引用的语法,其中有两个参数 a 和 b,并且引用是对 a 的方法 在 b 上. 例如我了解如何 Arrays.sort(personArray,comparators::compareByName); 相当于 Arrays.sort(personArray, (o1, o2) -> comparers.compareByName(o1, o2)); 因为在这种情况下,l
..
Java 8 的等价物是什么 :: (双冒号运算符) 在 Groovy 中? 我正在尝试在 groovy https://github.com/bytefish/PgBulkInsert 但是映射部分的工作方式与 Java 8 不同: public PersonBulkInserter() {super("sample", "unit_test");mapString("first_
..
我注意到有关使用 Java 8 方法引用的未处理异常的一些奇怪之处.这是我的代码,使用 lambda 表达式 () ->s.toLowerCase(): 公共类测试{公共静态无效主(字符串 [] args){测试NPE(空);}私有静态无效 testNPE(字符串 s){线程 t = new Thread(() -> s.toLowerCase());//线程 t = new Thread(s:
..
我正在尝试在我的代码中使用 Java 8 方法引用.有四种类型的方法引用可用. 静态方法参考. 实例方法(绑定接收器). 实例方法(未绑定接收器). 构造函数参考. 使用 Static method reference 和 Constructor reference 我没有问题,但是 Instance Method (Bound receiver) 和 Instance Meth
..