У меня очень странный случай декомпиляции класса.
У класса есть три поля:
private String descError;
private Number codError;
private List<String> errorList;
Когда я декомпилирую класс с помощью FernFlower или JDGui, я вижу три полябез проблем, но когда я загружаю .jar, содержащий класс, в мой classLoader, этот класс имеет «Map» вместо «List».
Я получаю:
java.lang.reflect.Field
С этими свойствами:
Подпись: Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
Тип: interface java.util.Map
Класс: Myclass
Каждый знает, что может быть причинойэтот странный случай?
Вот мой код:
private List<MyObjects> loadClass(String clazz, URLClassLoader completeClassLoader) {
Class<?> loadClass = completeClassLoader.loadClass(clazz);
Field[] classFields = loadClass.getDeclaredFields();
for(Field fAux : classFields) {
//My code
}
}
loadClass.getDeclaredFields возвращает этот массив типов:
[
private java.lang.String MyClass.fieldName1,
private java.lang.Number MyClass.fieldName2,
private java.util.Map MyClass.fieldName3
]
Вместо реальных типов:
[
private java.lang.String MyClass.fieldName1,
private java.lang.Number MyClass.fieldName2,
private java.util.List MyClass.fieldName3
]