我有一些使用这些方法的类(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/