2014-04-01 4 views
1

안녕하세요, 문자열을 참조로 사용하는 방법에 관해서 질문하고 싶습니다. Java 문자열을 객체 호출로 사용하십시오.

하자

내가 방법을 액세스하기를 원한다면

일반적으로 (예를 getFirst()에 대해) 내가 지금 ChinaShip.getFirst()

을 입력합니다 내가 ChinaShipHongkongShip라는 이름의 유형 LinkedList의 두 가지 목적을 가지고 있다는 말을 가정 해 봅시다 그 다른 개체에서, 나는 내용이 문자열 인 Destination 변수를 얻었습니다. 콘텐츠의 예는 이고 Hongkong

LinkedList 개체에 액세스하기위한 이름으로 변수의 콘텐츠를 사용할 수 있습니까?

는 내 접근 방식은 첫번째 것은 문자열 Destination + "Ship"

이 내가 이런 식으로 일을하기보다는 비교 해요 ChinaShip입니다 stringHongkongShip

이유를 생성합니다 것 먼저 변수를 연결할하다

Destination은 수백 가지 가능성으로 구성됩니다.

고맙습니다.

감사합니다.

+1

아니요,하지만 어떤 종류의'Map'을 사용할 수 있습니다 – MadProgrammer

+0

[HashMap] (http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html# % 28K, % 20V % 29) 또는 [LinkedHashMap] (http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html) 여기서 key = value 쌍의 정보를 저장할 수 있습니다 – Arvind

+0

처럼 보입니다. 감사 : D – Ditto

답변

1

:

Map<Desitnation, value> destinations = new HashMap<Desitnation, value>(); 

이 다음 대상 키의지도를 검색 : 이러한 고유 때문에

+0

이것은 내가해야 할 exactyly입니다. 고마워 폐하 : D – Ditto

1

리플렉션 API를 사용할 수 있습니다. 다음과 같은 코드를 사용할 수 있습니다 MyClass의 목록이 클래스에서 선언하는 경우 :

LinkedList list = (LinkedList) MyClass.class.getDeclaredField(Destination + "Ship").get(this); 

이 위의 코드는 그렇지 않으면 get(this) 호출이 get(myClassInstance)로 변경해야하는 MyClass에 객체 내에서 호출되어 있다고 가정합니다. MadProgrammer가 언급했듯이지도를 사용하는 것이 더 나을 것입니다. 불행하게도

http://www.tutorialspoint.com/java/util/hashmap_get.htm

1

당신은지도를 사용하고 키로 desitnation 문자열을 사용할 수 있습니다 자바에서는 그렇게 할 수 없습니다. 하지만 이것에 더 가깝습니다.

HashMap<String, LinkedList> dest = new HashMap<String, LinkedList>(); 
dest.put("China", ChinaShip); 
dest.put("Hongkong", HongkongShip); 
..... 

if(dest.containsKey(Destination){ 
    dest.get(Destination).getFirst(); 
} 
0

아키텍처를 다시해야한다고 생각합니다. String으로부터 메쏘드 이름을 생성 할 필요는 없습니다.

대상이있는 Ship 개체와 Ship의 연결된 목록이 필요하다고 생각됩니다.

배송지를 목적지로 매핑해야하는 경우, 키를 목적지 문자열로 사용하는지도를 가지고 있으며 그 값은 해당 목적지로가는 배송 목록입니다.

map.get ("China")를 수행하면 중국으로가는 선박의 목록을 얻을 수 있으며, 거기에서 원하는 것을 할 수 있습니다.

+0

네가해야할 일이 정확히있다. 고마워요, 그렇게 해보겠습니다. – Ditto

관련 문제