Java21 方法引用

方法引用: 15c8f9a0c04fbe2de25b236b914c2571_MD5

b673f0dad371815c793347c5b5d14875_MD5 实现的要求: a393b3bd34644cdaef0ef9620172bbf1_MD5 被引用的方法可以是其他人的代码,也可以是其他语言的代码. 具体如何调用?调用必须使用类名::方法名(::叫做方法引用符) c0f2f2b1995f7419ade0144673d78c80_MD5

引用静态方法: 646a4c05b6e6ba1f49b225dbf8f2cf21_MD5 2454eb870ea885b1610b2a2ba0f54653_MD5 像这样,就可以直接使用标准库的方法.


引用成员方法: 17c0d353b6b26e2fed9dd4a4658122fe_MD5 像这样:,专门写一个工具类,里面的方法就可以直接引用和使用: f54b6ad3ee7d618c338af772bb4bb4d6_MD5 但是如果我把这个stringJudge函数放到main函数同一个类里面: e7b54f2ff3bf3baf5583989e0904fb14_MD5 会报错.为什么? 因为main是static方法,里面是没有this的.因此我们有两种选择: 1.new一个对象. b2fe0c50f81664452b24a933003492d4_MD5 2.我们在有this的方法里调用它. 用this/super可以引用类中的静态方法吗?不可以,因为静态方法里没有this/super.


引用构造方法: 1aeeb2ec2306719ff83aa37faae456d4_MD5 8fb3c91284f598c2f9d5b97f951fd20b_MD5 然后这样: 4bee57e5f6ffeed87c4113d2c4950710_MD5 tip:引用构造方法这里开了个口子.一般来说,函数引用需要返回值一样,但是这里构造函数没有返回值.就默认返回了一个对象了,从而和上面那种返回new的写法保持一致.

tip:标准库里,tolist方法: 516d027a48d571b18b66b8475d59af8c_MD5

用的就是引用构造方法.


使用类名引用成员方法: 2fe433fc95af7f2ecf178f74b96ed136_MD5 48e1408ee46daf817db63de902cafcc5_MD5 第一种写法里形参有string,但是toUpperCase的形参并没有: 4042a38b1944501d82c0197e9dfde706_MD5 方法引用的规则实际上是独有的: 56f0ea1887e5a422c1772e118565cb94_MD5 也就是会默认调用传入的string对象的toUpperCase.也即: 47b326dafee4f045e67a89b31f4cfacc_MD5


引用数组的构造方法: f12c9b0350cf2810e95d3fc639cdbc8b_MD5 为什么数组还有构造方法?其实我们平时创建数组的时候都在用,只是不知道罢了. 9ef121a1e3073b3d780cdd6cfea68257_MD5