比如Map<String,Object> a <字符串,方法引用>
然后通过a.get()去调用方法。
实际上你可以用容器存方法,key-value的形式,用key找到对应的value(方法)即可直接实现方法的调用
首先你这个变量首先是引用类型才行
类似js的语法,java里面没有类似支持,不过建议你考虑一下java的反射机制。
Object ascii_nul = (Runnable) () -> {
this.ignore();
};
现在是这样写的,存入Map,调用都实现了,可这是一个异步的,想搞一个单线程的。不知道怎么写了。。
Java根本没必要用js的回调方法,你object传的是对象的话就可以调用对象的方法,如果仅仅想调用方法,new个对象就好了。
package aa;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class aaa {
public void ccc(){
System.out.println("aa");
}
public static void main(String args[]) throws NoSuchMethodException, SecurityException{
//变量
String a = null;
HashMap<String,Object> map = new HashMap<String,Object>();
Class aClass=aaa.class;
Method method1 = aClass.getMethod("ccc", null);
map.put(a, method1);
}
}
java是面向对象的语言,生命的都是对象,存储的都是对象,所以不存在你说的存储方法。
你要掉用普通方法,就必须要有对象,而这个对象就必须存储于map里面,这是原则。如果
你要在map里面掉用不同的类的不同的方法,又因为map的key不能重复,map可以重复,那么你前面的key就用方法名+","+类名全路径,后面就用方法类名这样你在使用的时候就先获取对应的键,再切割出类的全量名,和需要执行的方法,前面通过反射ClassforName("java.lang.String").newInstance();获取一个Object对象,之后就是强转,这个只能你在用这个Object的时候通过value去判断它要强转成那个对象,之后通过键中切割的方法去匹配这个对象反射出来的所有方法,通过equeals比较方法是否对,对的话,就进入调用,不可能完全实现的
,强转那一下你确定不了它要强转成哪个对象,除非你已经决定了只强转成某对象,那么就可以用instanceof比较
一下,这样你就获得了指定的类对象了,这样也就可以调用指定的方法了。
把方法写成返回值的就可以,例如返回map、list都可以,到时候,用一个相同类型的变量调用就可以
方法不是类型,不能直接当作values,你可以让这个方法返回某一类型,然后将values设置成xx.gggg();这样才可以,去试试