简体   繁体   中英

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)

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 .

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();

Maybe you are looking for Class#newInstance() .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM