自定义方法参考

wribegjk  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(307)

在java中是否可以用参数进行方法引用?让我澄清一下:我想知道有没有可能写这样的代码

public boolean customEquals(ClassType object) {
     Predicate<MethodReference> compare = (getter) -> {
            return this::getter.equals(object::getter);
        };
    return compare.test(MethodReference);
}

其中classtype是class,customequals方法声明为methodreference是getter的某个链接
主要思想是我想把方法传递给接口,接口应该对当前对象和参数对象执行这个方法

hkmswyz6

hkmswyz61#

关于你的观点
主要思想是我想把方法传递给接口,接口应该对当前对象和参数对象执行>这个方法
有可能,通过反射传递方法来执行。请参阅以下代码部分:

package org.test;

import java.lang.reflect.Method;

public interface SimpleInterface {

    public Object exec(Method method, Object param0, Object param1);

}//interface closing

接口有一个方法,它以一个方法作为参数

package org.test;

import java.lang.reflect.Method;

public class SimpleClass implements SimpleInterface{

    public Integer simpleMethod(Integer a, Integer b) {return a+b;}

    @Override
    public Object exec(Method method, Object param0, Object param1) {

        Object retVal=null;

        try{retVal=method.invoke(this, param0, param1);}catch(Exception e) {e.printStackTrace();}

    return retVal;

}//exec closing

}//课程结束
接口实现以及另一个方法,该方法将被传递以供执行。

package org.test;

import java.lang.reflect.Method;

public class SimpleTester {

    public static void main(String[] args) throws Exception{

        SimpleClass obj=new SimpleClass();
        Method method=obj.getClass().getMethod("simpleMethod", Integer.class, Integer.class);

        Object val=obj.exec(method, new Integer(1), new Integer(2));

        System.out.println(val);

    }//main closing

}//class closing

获取方法引用并传递给接口执行的类。
上面使用反射来实现功能。
注意:上面的例子是jdk8

相关问题