У меня есть классы, унаследованные от абстрактного пакета (этот класс имеет абстрактный метод с именем read, который читается из ByteBuffer).
в Python я бы сделал что-то вроде...
class Blabla(Packet):
pass
class Blabla2(Packet):
pass
и тогда я бы начал каждый класс в списке, как это
_packets = [Blabla, Blabla2]
и когда я буду идентифицировать идентификатор пакета, я бы сделал это
pck = _packets[packetId]()
Хотите сделать то же самое в java. Есть ли какой-либо быстрый способ (кроме использования переключателя)
Это то, что вы должны делать:
ArrayList<Class> list = new ArrayList<Class>();
list.add(Class.forName("Blabla"));
list.add(Class.forName("Blabla2"));
list.get(packetId).newInstance();
Возможно, вы ищете Class#newInstance()
.