方法引用
时间: 2023-07-15 08:15:50 浏览: 62
方法引用是一种Lambda表达式的简写形式,用于直接引用现有的方法来代替Lambda表达式,从而使代码更加简洁易读。方法引用可以通过双冒号(::)来引用方法,双冒号前面是类或者对象名称,后面是方法名称。方法引用可以分为四种类型:
1. 静态方法引用:类名::方法名
2. 实例方法引用:对象名::方法名
3. 特定类的任意对象的方法引用:类名::方法名
4. 构造方法引用:类名::new
例如:
```java
// 静态方法引用
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().forEach(System.out::println);
// 实例方法引用
String str = "hello";
Function<Integer, Character> func = str::charAt;
System.out.println(func.apply(1));
// 特定类的任意对象的方法引用
List<String> list = Arrays.asList("hello", "world", "java");
list.stream().map(String::length).forEach(System.out::println);
// 构造方法引用
Supplier<String> supplier = String::new;
System.out.println(supplier.get());
```
以上代码分别演示了四种方法引用的用法。
相关问题
java 方法引用
Java 方法引用是一种简化Lambda表达式的语法形式,它可以直接引用现有方法并直接传递给函数式接口。
Java方法引用的语法形式为::,它包含以下几种类型:
1. 静态方法引用:ClassName::staticMethodName
例如:Math::abs
2. 实例方法引用:instanceName::instanceMethodName
例如:System.out::println
3. 类的任意对象方法引用:ClassName::methodName
例如:String::length
4. 构造方法引用:ClassName::new
例如:ArrayList::new
以下是一个简单的示例,演示如何使用方法引用来实现排序:
```
List<String> names = Arrays.asList("Tom", "Jerry", "Alice", "Bob");
// 传统的Lambda表达式方式
names.sort((s1, s2) -> s1.compareTo(s2));
// 方法引用方式
names.sort(String::compareTo);
```
上面的代码中,我们使用了静态方法引用方式来传递字符串的compareTo方法给sort方法,这样就可以根据字符串的字典序进行排序了。
lambda表达式方法引用 java
在Java中,lambda表达式可以用于替代匿名内部类,用于简化代码。lambda表达式可以使用方法引用来引用已经存在的方法。方法引用主要有以下几种形式:
1. 静态方法引用:类名::静态方法名
例如,对于静态方法`Math.max(a, b)`,可以使用lambda表达式`Math::max`来引用。
2. 实例方法引用:对象::实例方法名
例如,对于实例方法`str.length()`,可以使用lambda表达式`String::length`来引用。
3. 类的任意对象的实例方法引用:类名::实例方法名
例如,对于实例方法`String.valueOf(obj)`,可以使用lambda表达式`String::valueOf`来引用。
4. 构造方法引用:类名::new
例如,对于构造方法`new ArrayList<>()`,可以使用lambda表达式`ArrayList::new`来引用。
需要注意的是,方法引用只能引用已经存在的方法,而不能创建新的方法。此外,方法引用的参数和返回值类型必须与被引用方法的参数和返回值类型一致。
希望以上信息能对你有所帮助!如果还有其他问题,请随时提问。