BlackCat
BlackCat

Reputation: 329

Java class list like in Python

I have classes which are inherited from abstract Packet( this class has abstract method named read which reads from ByteBuffer).

in Python i would do something like...

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

and then i would init each class in list like this

_packets = [Blabla, Blabla2]

and when i would identify id of packet i would do like this

pck = _packets[packetId]()

Want to do the same in java. Is there any fast way(except using switch)

Upvotes: 1

Views: 412

Answers (3)

Vijay Mathew
Vijay Mathew

Reputation: 27184

This is what you should do:

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

list.get(packetId).newInstance();

Upvotes: 3

Thilo
Thilo

Reputation: 262684

Maybe you are looking for Class#newInstance().

Upvotes: 2

NPE
NPE

Reputation: 500663

Yes, it is possible to do something very similar in Java.

You could have a list of Class objects and then call list.get(packetId).newInstance() to create an instance of the correct class.

See the Javadoc.

Upvotes: 4

Related Questions