2013-09-02 8 views
0

으로 나는 개체의 인간이있다.매개 변수 '변수는 매개 변수

public class Example { 

public static Object getVarOfObject(Object obj, Object var){ 

    return obj.var; 

} 

public static void main(String[] args) { 

    Human john = new Human("John"); 

    String johnsName = getVarOfObject(john, name); 

} 

} 

내가 방금 john.name 입력 할 수 있습니다 알고 있지만 내 경우에는 내가이 작업을 수행 할 수있는 기능이 필요합니다 : getVarOfObject() 나는 존의 이름을 얻으려면라는 기능으로
.

+0

를 사용할 수 있습니다. 코드를 가능한 간단하게 만들고 싶습니다. 이와 같은 것을 추가하기 시작하면 논리를 완전히 이해하기 위해 몇 가지 내용을 읽습니다. –

+0

@BenjaminDale 리플렉션을 정확하고 간결하게 사용하면 간단해질 수 있습니다. – hexafraction

답변

2

이 프로그램을 복잡 이상, 나에게이 코드

 Field field = <Your object>.getClass().getDeclaredField(fieldName); 
     field.setAccessible(true); 
     return (String) field.get(object); 
+0

나의 즐거움 : D - –

2

반듯이 수행 할 수 없습니다.

이 마법은 오류, 미묘한 문제, 예외, 성능 손실, 질식, 익사, 죽음, 마비 또는 화재를 유발할 수 있습니다.

개체 obj이 개체이고 문자열 field이 필드의 이름입니다.

Class clazz=Human.getClass(); //or for class-independence use `obj.getClass()`. 
Field fd=clazz.getField(name); 
fd.get(obj); 
2

왜 접근기 메서드 (getter 및 setters)를 사용하지 않습니까?

public String getName() { 
    return name; 
} 

및 주요 방법 :

Human에서

Human john = new Human("John"); 
String johnsName = john.getName(); 
+0

개체에 getName() 메서드가 있는지 확인하기 위해 인터페이스를 만들어야하는 함수를 사용하고 싶습니다. 하지만 어쩌면 나는 이름을 얻고 싶지는 않지만 또 다른 변수를 얻고 싶을 것이다. 이 방법은 매우 융통성이 없을 것입니다. – VoidCatz