Это странный вопрос. У меня есть метод, который заполняет список набором классов с использованием java-отражения.Java: Является ли отражение каждый раз на каждом компьютере?
import org.reflections.Reflections;
...
Reflections reflections = new Reflections("network.packet");
Class<?>[] packets = new Class<?>[256];
for (Class<?> c : reflections.getSubTypesOf(Packet.class))
{
try {
byte opcode = ((Packet)c.newInstance()).getOpcode();
packets[opcode] = c;
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
GetOpcode возвращает байт, регистрирующий байт в пакете. Мне интересно, могу ли я сделать код более дружественным API, предлагая автоматическое решение для сопоставления опкодов. В настоящее время у меня есть в классах, которые расширяют силу пакета, вызывает супер-конструктор с байтом, регистрирующим код операции.
setOpcode(byte num)
, который устанавливает код операции для этого класса.
Моя проблема в том, могу ли я доверять org.reflection, чтобы каждый раз запускать каждый раз на каждой машине, чтобы вычислять коды, а не заставлять их жестко закодировать, и заставить пользователей API не наступать на уже существующие коды.
Итак, кто-нибудь знает?
@mjn reflections-0.9.10 –