2011-07-08 64 views
1

我有从抽象数据包继承的类(该类具有名为read的抽象方法,它从ByteBuffer读取)。类似于Python的Java类列表

在Python我会做这样的事情......

class Blabla(Packet): 
    pass 
class Blabla2(Packet): 
    pass 

,然后我会初始化每个类列表这样

_packets = [Blabla, Blabla2] 

,当我将确定数据包的ID我会做像这样

pck = _packets[packetId]() 

想要在java中做同样的事情。有没有什么快速的方法(除了使用开关)

回答

4

是的,有可能做一些非常类似于Java的东西。

您可以有一个Class对象列表,然后致电list.get(packetId).newInstance()创建正确类的实例。

请参阅Javadoc

2

也许您在寻找Class#newInstance()

3

这是你应该做的:

ArrayList<Class> list = new ArrayList<Class>(); 
list.add(Class.forName("Blabla")); 
list.add(Class.forName("Blabla2")); 

list.get(packetId).newInstance();