Java8?函数式编程(二)
针对?有两个点需要注意
1、ClassA::method的使用
可以可以代表两个意思,两种调用方式:
1、当前ClassA对象a调用的普通无参数方法method;
2、ClassA类的static有参(参数类型是当前对象类型)方法method(当前对象类型?a);
当ClassA类中既有static方法method,有又普通的方法method时,ClassA::method会报错
如下示例:
而如果将上图中的static方法的static关键字去掉,则恢复正常。
因为会默认找普通无参方法
如
所以在一些情况下使用ClassA::methodB,需要注意,ClassA中是否存在同名、同返回的有参静态方法且参数类型就是当前对象类型
如,在使用如下
为什么strMap可行,而intMap不行?
那是因为
Integer中?存在如下两个方法
2、new?ClassA()::method的使用
区别于ClassA::method
使用对象调用方法method
默认是调用的有参方法,方法参数是被执行的对象。
如下