2014-10-23 4 views
0

두 클래스가 있습니다. 다른 클래스에서 런타임 중에 해시 테이블 값 가져 오기

class Question 
{ 
    Hashtable<Integer, String> hs; 

    void populateHashTable(); 
    //to populate hashtable during runtime. 
} 

class QuestionGetter 
{ 
    String s; 
    int x; 
    //I want string s to hold the value of the key x. 
} 

질문 클래스의 해시 테이블

은 런타임 동안 채워됩니다. RMI 개념을 사용하여 서로 통신하고 값을 검색하는 두 클래스를 실행합니다. 따라서 질문 클래스에서는 여러 질문을 질문 번호와 함께 추가합니다.이 질문 번호는 질문 키를 입력하는 QuestionSetter 클래스에서 검색하려고합니다.

어떻게 구현하나요?

+0

RMI를 사용하면 로컬 인 것처럼 클래스를 사용할 수 있으므로 로컬 응용 프로그램에 원격 호출자 클래스가 있어야합니다. 우리가 수업 진행 상황을 볼 수 있도록 수업 다이어그램을 작성할 수 있습니까? –

답변

1

당신은 당신의 QuestionGetter 클래스의 Question 객체의 참조가 있어야합니다 : 처음에는

class QuestionGetter{ 

    Question question; 

    //constructors 

    public void add(String s, int x){ 
     question.hs.put(x, s); 
    } 
} 
+0

나는 런타임 중에 질문을 추가하는 질문 클래스를 실행합니다. 따라서 QuestionGetter의 인스턴스를 갖는 것은 새로운 인스턴스를 생성하고 빈 해시 테이블을 갖지 않을까요? – Farveaz

+0

응용 프로그램에서 동일한 인스턴스를 사방에 사용하는지 (싱글 톤 패턴 참조) 많은 인스턴스를 생성하는지에 따라 달라집니다 – rickyalbert

0

을, 나는 그것의 Hashtable 내에서 여러 질문을 포함하고 있기 때문에 당신의 Question 클래스는 참으로 QuestionCollection 당신의 설명에서 가정합니다.

당신이 (가 어쨌든 런타임 동안 채워되기 때문에) 하나의 QuestionCollection를 사용하려는 경우, 당신은 그것의 필드와 메소드 static를 선언 할 수 있습니다 :

지금, 당신이 원하는에 따라 두 가지 가능성이있다. 이제 QuestionCollection.getHs().get(x)int x에 넣고 QuestionGetter으로 입력하면됩니다. hs에 직접 액세스하고 싶지 않으므로 QuestionCollection 클래스에서 제공하는 정적 getter-Method를 삽입해야합니다. 이것은 매우 간단하지만 약한 해결책입니다.

여러에게 QuestionCollection의를 사용할 수있는 경우

, 당신은에서 질문을 얻을 수있는 QuestionCollection 알 수 있도록 QuestionCollection의 당신의 QuestionGetter 인스턴스를 전달해야합니다. 이 경우 rickyalbert의 대답이 적용됩니다.

관련 문제