2011-07-08 96 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();