1.方法引用的访问符(::),和C++的域访问符好像是一样的,从类里面直接获取方法的引用,用来取代函数接口中的虚函数的函数体的 意思,我感觉,如下面,本来虚函数也是要实现println的函数的内容,就直接将println函数丢进去,根据能推导就可以省略省略的原则,printstring的函数体内容和println的函数体的内容是一样的,都是将s输出到窗口上。
package demo;
/**
* <p> TODU </P>
*
* @author yeager
* @Version V1.1.1.0
* @date 2023/11/29 17:03
*/
public class MethodPtrDemo {
interface Printable
{
void printString(String s);
}
public static void main(String[] args)
{
userPrintable(s->System.out.println(s +" hello"));
userPrintable(System.out::println);
}
private static void userPrintable(Printable p){
p.printString("爱生活,爱Java");
}
}
我自己写一个方法 只要输入输出是对得上的,就很容易看明白了。
myMethod:通过类名访问类的静态方法。
myMethod2:通过对象去访问类的成员函数;对象也可以访问静态方法
meMethod3:通过类名访问成员函数,报错了= =
package demo;
/**
* <p> TODU </P>
*
* @author yeager
* @Version V1.1.1.0
* @date 2023/11/29 17:03
*/
public class MethodPtrDemo {
interface Printable
{
void printString(String s);
}
interface Convert
{
int convertToInt(String s);
}
public static void main(String[] args)
{
userPrintable(s->System.out.println(s +" hello"));
userPrintable(System.out::println);
userConvert(MethodPtrDemo::myMethod);
MethodPtrDemo demo = new MethodPtrDemo();
userConvert(demo::myMethod2);
userConvert(MethodPtrDemo::myMethod3);
}
private static void userConvert(Convert con)
{
int num = con.convertToInt("666");
System.out.println(num);
}
private static void userPrintable(Printable p){
p.printString("爱生活,爱Java");
}
public int myMethod3(String str)
{
int num = Integer.parseInt(str);
num %= 10;
return num;
}
private int myMethod2(String str)
{
int num = Integer.parseInt(str);
num %= 10;
return num;
}
private static int myMethod(String str)
{
int num = Integer.parseInt(str);
num %= 10;
return num;
}
}