2011-03-28 5 views
0
내가

자바 : 어떻게 메모리

["bubby4j_falling"] = true; 
뭔가를 할 수 있도록, 내가 동적으로 명명 바르 같은 대해 생각했다 메모리에 사용자 이름에 특정 값을 저장해야

에서 사용자 별 일을 저장해야합니다

["bubby4j_falling"] 

그러나,이 그냥 예입니다 의해

인덱스는, 난 그냥있는 방법은 신속하고 간단하게 동적으로 얻고 저장하는 것을하려는, 즉 작동하지 않습니다 알고있다.

답변

7

문자열 키가있는 맵 (예 : HashMap<String, something>)을 사용하려고합니다.

Map<String, Boolean> map = new HashMap<String, Boolean>(); 
map.put("bubby4j_falling", true); 

if(map.get("bubby4j_falling")) { 
    ... 
} 

사실, 귀하의 경우에 Set<String>이 더 유용 할 것입니다 :

Set<String> fallingUsers = new HashSet<String>(); 
fallingUsers.add("bubby4j"); 

if(fallingUsers.contains("bubby4j")) { ... } 

을하지만 당신은 이미 University of Florida의 User 개체가 (당신

귀하의 예는 다음과 같을 것이다) Set<User>을 사용하거나이 falling을 사용자 개체의 속성으로 사용하는 것이 좋습니다. 그런 다음 Map<String, User>을 사용하여 이름으로 사용자 개체를 가져올 수 있습니다.

1

@ Paŭlo Ebermann의 답변이 자리하고 있습니다.

단지 자바 언어가 변수과 유사한 것은 없다는 것을 지적하고 싶습니다. 모든 Java 변수 이름과 유형은 Java 소스 코드에서 선언됩니다. 리플렉션조차도 기존 클래스의 새 변수를 즉시 만들 수는 없습니다.

자바는 정적 프로그래밍 언어로 설계되었으며, 그렇게 사용하면 가장 잘 작동합니다.

(이론적으로 소스 코드 또는 바이트 코드 생성 기술로 혼란에 빠지면 새로운 변수로 새 클래스를 동적으로 생성 할 수 있지만 엄청난 양의 작업이 필요하며 현명한 프로그래머가 생각하는 것이 아닙니다. 게다가이 접근법이 당신의 특별한 경우에 실제로 도움이 될지 의심 스럽습니다.)