2013-08-13 3 views
0

나는이 같은 정수 변수의 이름을 포함하는 문자열,이 :읽기 값

int branchControlFlow1 = 2; 
String branchField = "branchControlFlow1"; 

가능한 액세스 문자열 (branchField)를 사용하여 변수 branchControlFlow1의 값을 그 변수 이름이 들어 있습니까?

변수 "branchControlFlow1"은 반드시 정수 유형이어야합니다.

도움 주셔서 감사합니다.

답변

1

당신은 정말 대신 정수의지도/ArrayList를 사용해야합니다. 지도는 키 (문자열 또는 모든 객체)를 값으로하고 목록 (arraylist 또는 연결된 목록)은 int-> Entry입니다.

그렇지 않은 경우 검은 색 마법의 반사에 의존해야합니다. 나는이 요술을 아래에서 설명 할 것이다. 나는 이 아니며은 1600s 국회의원의 두통, 메스꺼움, 감전사, 익사, 익사, 강제 익사, 예외, 손해, 부수적 또는 결과적 또는 기타 문제에 대해 책임을지지 않습니다.

자주 호출하거나 시간이 중요한 코드에서 발생하는 경우 성능이 저하 될 수 있습니다. 필요할 때마다 가져 오는 대신 얻는 값을 할당하여 반사를 최소화하십시오.

먼저 클래스 개체의 인스턴스를 가져옵니다. 필드, FooClass라는 클래스에있는 경우 사용

Class clazz=FooClass.class; 
Field fd=clazz.getField(name); 
int val=fd.getInt(myObjectOfFooClass); 

당신은 스택에 지역 변수에 대해이 작업을 수행 할 수 없습니다.

4

반사를 사용하여 이름별로 필드를 조회 할 수 있습니다.

그러나이지도를 사용하려는 경우 가장 적합한 선택입니다.

Map<String, Integer> map = ... 
map.put("branchControlFlow1", 2); 
int num = map.get("branchControlFlow1");