Как автоматически передать все вложенные статические классы в вызов метода в качестве параметра?
Есть ли способ получить массив статических классов внутри Network
класс (определенный ниже), и передать атрибут каждого класса class
в параметр вызова метода kryo.register
?
public class Network {
// Classes to be transferred between the client and the server
public static class A {
public int id;
public String name;
}
public static class B {
public int id;
public int x;
public int y;
}
// Rest of the classes are defined over here
static public void register(EndPoint endPoint) {
Kryo kryo = endPoint.getKryo();
// typical way of registering classes so that kryonet can use it
// kryo.register(A.class);
// kryo.register(B.class);
// the rest of the classes are registered with kryonet over here
// my attempt at solving the question,
// but for some reason this doesn't work?
for(Object o : Network.class.getDeclaredClasses()) {
kryo.register(o.getClass());
}
}
}
1 ответ
Решение
Проблема в том, что вы используете класс класса, а это не то, что вам нужно. если вы использовали правильный тип для результата getDeclaredClasses()
позвони, это было бы более очевидно:
for(Class<?> c : Network.class.getDeclaredClasses()) {
kryo.register(c);
}
(кстати, вы уже используете отражение -> getDeclaredClasses()
).