我想创建一个IdentityHashMap<Class<T>, Consumer<T>>.基本上,我想用一种方法来映射一个类型,说明如何处理这种类型.
我想动态地能够用对象X说,执行Y.我能做到
private IdentityHashMap<Class<?>, Consumer<?>> interceptor = new IdentityHashMap<>();
Run Code Online (Sandbox Code Playgroud)
但它很糟糕,因为我在使用它时必须在lamba中投射对象.
例:
interceptor.put(Train.class, train -> {
System.out.println(((Train)train).getSpeed());
});
Run Code Online (Sandbox Code Playgroud)
我想做的是
private <T> IdentityHashMap<Class<T>, Consumer<T>> interceptor = new IdentityHashMap<>();
Run Code Online (Sandbox Code Playgroud)
但似乎不允许这样做.有没有办法做到这一点 ?使用此类型的方法映射类型的最佳解决方法是什么?