Java方法引用

标签 java

我有一些使用这些方法的类(class):

public class TestClass
{

    public void method1()
    {
        // this method will be used for consuming MyClass1
    }

    public void method2()
    {
        // this method will be used for consuming MyClass2
    }
}

和类:

public class MyClass1
{
}

public class MyClass2
{
}

我想要HashMap<Class<?>, "question">我将像这样存储(键:类,值:方法)对(类“类型”与方法相关联)

hashmp.add(Myclass1.class, "question");

我想知道如何将方法引用添加到 HashMap(替换“问题”)。

附注我来自 C#,我只写了 Dictionary<Type, Action> :)

最佳答案

现在 Java 8 已经出来了,我想我会用如何在 Java 8 中做到这一点来更新这个问题。

package com.sandbox;

import java.util.HashMap;
import java.util.Map;

public class Sandbox {
    public static void main(String[] args) {
        Map<Class, Runnable> dict = new HashMap<>();

        MyClass1 myClass1 = new MyClass1();
        dict.put(MyClass1.class, myClass1::sideEffects);

        MyClass2 myClass2 = new MyClass2();
        dict.put(MyClass2.class, myClass2::sideEffects);

        for (Map.Entry<Class, Runnable> classRunnableEntry : dict.entrySet()) {
            System.out.println("Running a method from " + classRunnableEntry.getKey().getName());
            classRunnableEntry.getValue().run();
        }
    }

    public static class MyClass1 {
        public void sideEffects() {
            System.out.println("MyClass1");
        }
    }

    public static class MyClass2 {
        public void sideEffects() {
            System.out.println("MyClass2");
        }
    }

}

关于Java方法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10085457/

相关文章:

java - 如果没有 super 类, super 构造函数?

java - 尝试通过迭代字符串中的每个字符来限制每行的文本输出长度

java - 无法在 IntelliJ 中导入 Maven 项目

java - 如何将字符串从单独的类(Java)传输到 void...?

java - 如何以良好的 Java 方式处理由 Exception 引起的问题

java - 从java中的数组中删除特定索引

java lwjgl 2着色器错误

java - 动态创建 JButton

java - 如何获取 JavaFX TableColumn 的内容?

java - 在外部应用程序中使用 Grails HSQLDB