2011-07-08 6 views
1

私は抽象パケットから継承したクラスを持っています(このクラスは、ByteBufferから読み取るreadという抽象メソッドを持っています)。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(); 
関連する問題