method-reference相关内容

Java 8:方法引用绑定接收器和未绑定接收器的区别

我正在尝试在我的代码中使用 Java 8 方法引用.有四种类型的方法引用可用. 静态方法参考. 实例方法(绑定接收器). 实例方法(未绑定接收器). 构造函数参考. 使用 Static method reference 和 Constructor reference 我没有问题,但是 Instance Method (Bound receiver) 和 Instance Meth ..
发布时间:2021-11-25 19:21:57 Java Web开发

System.out::println 的等效 lambda 表达式是什么

我偶然发现了以下 Java 代码,它使用了 System.out.println 的方法引用: class SomeClass {公共静态无效主(字符串 [] args){列表数字 = Arrays.asList(1,2,3,4,5,6,7,8,9);numbers.forEach(System.out::println);}}} System.out::println 的等效 lambda ..
发布时间:2021-11-25 15:41:08 Java Web开发

在 Java 8 中方法引用缓存是个好主意吗?

考虑我有如下代码: class Foo {Y func(X x) {...}void doSomethingWithAFunc(Function f){...}无效热函数(){doSomethingWithAFunc(this::func);}} 假设 hotFunction 被频繁调用.那么是否建议缓存 this::func,也许像这样: class Foo {函数f = this::fu ..
发布时间:2021-11-25 14:23:25 Java Web开发

Comparator.reversed() 不使用 lambda 编译

我有一个包含一些 User 对象的列表,我正在尝试对列表进行排序,但只能使用方法引用,使用 lambda 表达式编译器会给出错误: ListuserList = Arrays.asList(u1, u2, u3);userList.sort(Comparator.comparing(u -> u.getName()));//有效userList.sort(Comparator.comparing ..
发布时间:2021-11-25 13:45:26 Java Web开发

Java传递方法作为参数

我正在寻找一种通过引用传递方法的方法.我知道 Java 不会将方法作为参数传递,但是,我想获得替代方法. 有人告诉我接口是将方法作为参数传递的替代方法,但我不明白接口如何通过引用充当方法.如果我理解正确,接口只是一组未定义的抽象方法.我不想发送每次都需要定义的接口,因为几个不同的方法可以使用相同的参数调用相同的方法. 我想要完成的事情与此类似: public void setAllC ..
发布时间:2021-11-25 11:35:26 Java Web开发

对原始类型的方法引用有害吗?

下面的代码包含对 Enum::name 的引用(注意没有类型参数). public static >ColumnTypeenumColumn(Class klazz) {return simpleColumn((row, label) -> valueOf(klazz, row.getString(label)), Enum::name);}公共静态ColumnType ..
发布时间:2021-11-22 16:25:09 Java Web开发

Java传递方法作为参数

我正在寻找一种通过引用传递方法的方法.我知道 Java 不会将方法作为参数传递,但是,我想获得替代方法. 有人告诉我接口是将方法作为参数传递的替代方法,但我不明白接口如何通过引用充当方法.如果我理解正确,接口只是一组未定义的抽象方法.我不想发送每次都需要定义的接口,因为几个不同的方法可以使用相同的参数调用相同的方法. 我想要完成的事情与此类似: public void setAllC ..
发布时间:2021-11-19 22:48:00 Java Web开发

Java 8 数组构造函数引用如何工作?

假设我们有一个 IntFunction 类型的变量,它返回一个整数数组: IntFunction一世; 使用 Java 8 泛型,可以使用这样的构造函数引用来初始化这个变量: i = int[]::new Java 编译器如何将其转换为字节码? 我知道对于其他类型,例如 String::new,它可以使用一个 invokedynamic 指令指向 String 构造函数 java/l ..
发布时间:2021-11-18 03:58:14 其他开发

“String[]::new"是什么意思?意思?

我正在学习如何使用流,但我在使用此方法时遇到了问题. public static String[] inArray(String[] array1, String[] array2) {返回 Arrays.stream(array1).filter(str -> Arrays.stream(array2).anyMatch(s -> s.contains(str))).distinct().so ..
发布时间:2021-11-18 02:59:42 其他开发

从 LambdaMetafactory 创建 BiConsumer

我正在尝试通过 LambdaMetafactory 动态创建 BiConsumer 类型的方法引用.我试图应用在 https://上找到的两种方法www.cuba-platform.com/blog/think-twice-before-using-reflection/ - createVoidHandlerLambda 和这里 创建 BiConsumer 作为没有反射的 Field sette ..
发布时间:2021-07-06 18:40:19 其他开发

空变量不会使方法引用无效

当我使用绑定到变量 dog 的方法引用时,为什么代码不会抛出 NullPointerException,我后来将 null 分配给了该变量? 我使用的是 Java 8. import java.util.function.Function;类狗{私人食物= 10;公共 int 吃(int num){System.out.println("吃" + num);this.food -= num ..
发布时间:2021-06-10 18:50:24 其他开发

Java 8:不了解Java实现功能接口的方式

让我们说一个谓词和一个 Function -接口: Function函数= null;谓词谓词= null; 现在,我想给 Predicate -Interface一个方法引用,其中返回类型为 boolean ,在我们的示例中为参数字符串.但是,为什么以下方法参考似乎正确: 谓词谓词= String :: isEmpty ..
发布时间:2021-05-28 20:10:27 其他开发

与lambda的方法参考差异

我了解到方法参考中有4种类型.但是我不理解" 引用静态方法 "和" 引用特定对象的实例方法"之间的区别输入 ". 例如: 列表周=新的ArrayList();week.add("Monday");week.add(“星期二");week.add("Wednesday");week.add(“星期四");week.add(“星期五");week.add("Saturda ..
发布时间:2021-05-28 20:08:34 其他开发

为什么此Java 8方法参考进行编译?

我目前正在更深入地研究 Java 8 功能,例如Lambda和方法引用.玩一会儿,使我进入了以下示例: 公共类ConsumerTest {私有静态最终String [] NAMES = {"Tony","Bruce","Steve","Thor"};公共静态void main(String [] args){Arrays.asList(NAMES).forEach(Objects :: requ ..
发布时间:2021-05-18 20:23:36 其他开发

Kotlin setOnClickListener使用方法引用不起作用

我尝试使用与Java中相同的方法引用: button.setOnClickListener(this::clickListener); 使用Kotlin: button.setOnClickListener {this::clickListener} 但是,这在Kotlin中不起作用,解决方案是使用labmda表达式实际调用该函数: button.setOnClickLi ..
发布时间:2021-02-15 19:32:48 其他开发

如何知道Stream.toArray(Book [] :: new);数组有多少个元素,"Book [] :: new"的实现在哪里

我试图理解方法引用,但是我不知道如何使用此"Book [] :: new"它可以创建一个 具有正确数量的元素的数组. Book[] arrayBook = stBooks.toArray(Book[]::new); 为了在使用第二个和第三个选项时创建数组,我必须指定一个功能接口 会收到一个Int并返回一个新的数组. 但是,在第一个选项中,我不知道实现在哪里以及您在哪里指定数字或 具 ..
发布时间:2021-02-11 18:40:38 其他开发

lambda表达式与实例化方法引用之间的不同行为

据我所知,lambda表达式可以被方法引用替换而没有任何问题.我的IDE表示相同,但​​以下示例却相反. 该方法引用显然会返回相同的对象,而lambda表达式每次都会返回新的对象. import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class I ..
发布时间:2021-02-11 18:40:03 其他开发

按对象属性将地图分组到新地图

首先,让我添加实际的“示例代码": Map> allCarsAndBrands = new HashMap(); final String bmwBrandName = "BMW"; final String audiBrandName = "AUDI"; List bmwCars = new ArrayList(); bmwCars.a ..
发布时间:2021-02-10 19:01:10 其他开发