【发布时间】:2019-06-01 02:13:09
【问题描述】:
我有一些代码需要使用一组子类的泛型类型 1 动态生成泛型对象:例如keyEvent、mouseEvent 或 appEvent,这些都扩展了 event。所以,我的通用类EventFunction 需要一个模板,但是在我收到事件之前我不知道类类型是什么,所以有没有办法做到以下几点:
Event event = new KeyEvent(); // FOR EXAMPLE RECIEVING A KEY EVENT
// Require an EventFunction with that event class as the generic type
EventFunction<event.getClass()> func = new EventFunction<event.getClass()>(event);
如何执行上述操作:即动态指定通用值?
【问题讨论】:
-
但是你甚至不知道类型,编译时的语言应该怎么知道?泛型是一种编译时机制(嗯,主要是)。
-
@Shadov:我认为这是伪代码,它会写下intent。
-
你想用
func做什么?直到运行时才能知道具体的参数化类型,因此指定一个是没有意义的。通用超类型是Event。如果func成为EventFunction<Event>,你会怎么做?我认为,如果您想在使用func时获得具体类型,则必须强制转换 无论如何。
标签: java class object templates generics