У меня есть метод, который требует что-то вроде Double.class
как один из его входов;Отражение в Java: получить класс поля
например.
someOutput = SomeObj.someMethod("parameter",Double.class);
У меня есть еще один класс, который имеет кучу полей различных типов данных, которые я хотел бы, чтобы накормить в качестве входных данных для этого метода вместо явного написания Double.class
из Integer.class
и т.д. и т.п.
Я знаю, что это включает отражение Java, но я не совсем уверен, как делать то, что я хочу. Я пытаюсь что-то вроде этого, но он не работает:
for(Field field : Class.forName(MyClassWithLotsOfFields.class.getCanonicalName()).getFields()){
someOutput = SomeObj.someMethod("parameter",field.getClass());
//Do more stuff here...
}
но field.getClass()
не дает мне фактический класс поля от MyClassWithLotsOfFields
но вместо java.lang.reflect.Field
какие-либо идеи о том, как сделать то, что я хотеть?
Что вы пытаетесь достичь, выполнив 'Class.forName (MyClassWithLotsOfFields.class.getCanonicalName())' вместо просто 'MyClassWithLotsOfFields.class'? –
Я не сторонник, но я подозреваю, что они, возможно, думали, что вы могли бы получить ответ, прочитав javadoc для 'Field', о котором вы уже знаете. – yshavit