java中双冒号的使用
java中双冒号主要用于方法快速调用,省略参数传入的步骤,尤其在使用forEach方法时,其他方法也适用,需要传递的参数和方法需要的参数是匹配的
案例1,静态方法如下:
package com.example.api.test;
public class Test2 {
//有参调用
public static void test(int i){
System.out.println(i);
}
//无参调用
public static void test2(){
System.out.println(2);
}
}
package com.example.api.test;
import java.util.Arrays;
import java.util.List;
public class Test3 {
public static void main(String[] args) {
//默认返回的是run方法实现后的Runnable
Runnable test = Test2::test2;
test.run();
//以下是实际调用
List<Integer> list = Arrays.asList(1,2,3);
//使用Test2::test2时是错误的,因为forEach需要将参数传入
list.forEach(Test2::test);
}
}
实际结果:
案例2 非静态方法
package com.example.api.test;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
/**
* stream流的获取
*/
public class TestApi {
//通过Stream的generate方法来生成Stream
@Test
public void test5(){
Stream<Double> generate = Stream.generate(() -> Math.random());
//调用方法
generate.limit(10).forEach(this::a);
}
public void a(double a ){
System.out.println(a);
}
}
实际结果: