2016-12-23 8 views
-2

Таким образом, в классе (ImportantClass123) У меня есть это:Открытое поле из строки - Как вы можете получить открытое поле визави его имени (строка)

public AnotherImportantClass aReallyImportantClass; 

Как вернуть

AnotherImportantClass 

через знание того, что его назвали в качестве поля:

aReallyImportantClass 

Что-то вроде

ImportantClass123.getFieldWithName("aReallyImportantClass"); 

?

Как написать getFieldWithName? и каков будет его тип возврата? Класс?

+0

вам нужно что-то вроде Reflection API, [читать это] (http://stackoverflow.com/questions/160970/ how-do-i-invoke-a-java-method-when-given-the-method-name-as-a-string) –

+0

https://docs.oracle.com/javase/tutorial/reflect/member/fieldValues .html – shmosel

+0

@shmosel OP ищет тип поля, а не значение. Удивительно, но я не могу найти дубликат. –

ответ

1

Вы можете использовать отражение, чтобы получить эту информацию. Метод Class.getField(String) возвращает объект Field для публичного поля, заданного по имени. И объект Field имеет метод getType(), который даст вам тип этого поля:

public class Snippet { 
    public Integer x; 

    public static void main(String[] args) throws Exception { 
     Field x = Snippet.class.getField("x"); 
     Class<?> type = x.getType(); 
     System.out.println("Type of field x: " + type); 
    } 
}