有没有办法区分Java中不同的通用实例运行时?

Nil*_*zor 6 java generics

我来自一个C#世界,我刚刚学会了Java中的擦除,这让我有点失望.难道真的没有办法区分SomeGenericInstance<String>SomeGenericInstance<Integer>运行在Java中?

我问,因为我已经实现了一个超级简单的pub-sub框架,我希望有一个泛型类GenericMessage<T>.重要的是不要发送GenericMessage<String>给听众GenericMessage<Integer>.我尝试通过使用键值对列表来实现它,其中键是Class表示消息类型的对象.但是这个代码行产生true了一个问题......:

new GenericMessage<Integer>().getClass.equals(new GenericMessage<String>().getClass())

Bet*_*med 2

据我所知,抱歉,这根本不可能。