Java8 函数式编程(二)

Java8 函数式编程(二)

针对 有两个点需要注意

1、ClassA::method的使用

可以可以代表两个意思,两种调用方式:

1、当前ClassA对象a调用的普通无参数方法method;

2、ClassA类的static有参(参数类型是当前对象类型)方法method(当前对象类型 a);

当ClassA类中既有static方法method,有又普通的方法method时,ClassA::method会报错

如下示例:

15253776-88acf8318e062240.png
15253776-257dc38ad801b988.png

而如果将上图中的static方法的static关键字去掉,则恢复正常。

因为会默认找普通无参方法

15253776-9f0e19e7e7e49ba1.png
15253776-d6c25ade6b96eb90.png
15253776-cf9b7c953404f7bf.png

所以在一些情况下使用ClassA::methodB,需要注意,ClassA中是否存在同名、同返回的有参静态方法且参数类型就是当前对象类型

如,在使用如下

15253776-ae07da6cb4e5af9a.png

为什么strMap可行,而intMap不行?

那是因为

Integer中 存在如下两个方法

15253776-61c5b331a77485d4.png
15253776-d10a0a8d5d612f5d.png


2、new ClassA()::method的使用

区别于ClassA::method

15253776-b1eb2b8b161a97b3.png
15253776-85a038fcca438f60.png
15253776-ab7d9c81c7730563.png

使用对象调用方法method

默认是调用的有参方法,方法参数是被执行的对象。

如下

15253776-7105814740533ae1.png
15253776-1b3a978b9ba33d6e.png
15253776-317f1c7c36985b80.png

猜你喜欢

转载自blog.csdn.net/weixin_33695450/article/details/87411085