java如何实现在把方法赋值给一个变量,通过变量来调用方法

 比如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();这样才可以,去试试