2011-01-28 3 views
0

위젯 인스턴스에서 클래스 intance를 얻는 방법. gwt에서 내 위젯은 pojo 클래스의 개인 필드입니다. instanceOfPojo.returnWidget();을 사용하여 위젯을 가져올 수 있습니다. 방법. 말, AbcClass이 복합 연장, 우리는위젯 인스턴스를 얻으십시오

와 함께 여부 일치를 확인하실 수 있습니다 나를

하자 바꿔 보자 - 나는

if(widget instanceof CustomWidgetClass) ? 

에 사용할 수 있도록 위젯의 인스턴스 클래스를 얻는 방법을 알고있다

if(widget instanceof AbcClass) . 

하지만 AbcClass 클래스가 존재하지 않는다고 가정 해 봅시다. 그러나 abcClass 인스턴스를 얻을 수 있습니다. abcClass의이 인스턴스를 사용하여 java를 사용하여 유사한 클래스를 만드는 방법과 우리가 abClClass를 그 클래스에 캐스트 할 수 있도록 DefClass라고 부릅니다.

+0

GWT는 instanceof를 지원합니다. 질문 [if (widget instanceof CustomWidgetClass)]이 예상대로 작동해야합니다. 당신은 당신이 가지고있는 문제에 대해 더 구체적으로 말할 수 있습니까? –

+0

@Jason, 네, 지원 인스턴스를 알았습니다. 문제는 내 위젯이 구체적인 클래스로 생성되지 않았다는 것입니다. 그것은 instanceofPojo 안에 있습니다. 그래서 내가 (위젯 instanceof instanceOfPojo.returnWidget())와 비교하여 그것을 사용하는 방법? – cometta

답변

0

... 그렇다면 if (widget instanceof instanceOfPojo.returnWidget())와 비교하면 어떻게 사용합니까?

나는 당신이 무엇을 요구하고 있는지 이해하는 데 정말로 어려움을 겪고 있습니다. instanceof이 클래스 리터럴에서만 작동하기 때문에 작동하지 않는 widget instanceof instanceOfPojo.returnWidget()을 가져 오시겠습니까? instanceOfPojo.returnWidget()의 클래스가 widget의 클래스의 슈퍼 클래스 인 경우

를 확인하려면, 당신은 사용할 수 isAssignableFrom :

instanceOfPojo.returnWidget().getClass() == widget.getClass() 

: 그들은 동일한 클래스 경우

instanceOfPojo.returnWidget().getClass().isAssignableFrom(widget.getClass()); 

보고 그것이 의미하는 바가 아니라면 질문을 명확히 해보십시오.

편집 : 영업 이익은 이후 질문을 명확히했다.

... 우리는 abcClass의 인스턴스를 얻을 수 있습니다. 이 abcClass 인스턴스를 사용하여 java를 사용하여 비슷한 클래스를 만드는 방법

클래스의 인스턴스를 가져온 다음 비슷한 클래스를 만들려면 런타임에 클래스를 동적으로 만들어야합니다. Java에서 클래스를 동적으로 생성 할 수는 있지만 GWT 클라이언트 코드에서 수행 할 수 있을지 의심 스럽습니다. 이는 GWT가 Java의 하위 집합 만 지원하고 Javascript로 변환되기 때문입니다.

... 우리는 abcClass를 캐스트 할 수 있도록 DefClass라고 부릅니다.

abcClass의 클래스가 AbcClassAbcClass이 복합에서 직접 파생 ("알 수없는") 클래스에게이기 때문에,이 동적 클래스 DefClassabcClass을 전송할 수 없습니다.DefClassabcClass 상속 계층 구조의 일부가 아닌 (AbcClass ->Composite ->Widget ->UIObject ->Object) 및 사후 런타임시 DefClass을 포함하는 것을 상속 계층 구조를 변경할 수 없습니다.

1

위젯이 POJO 안에 있다면 디자인을 다시 방문해보십시오. 어쩌면 공장이 당신이하려고하는 것에 더 좋은 디자인 일 것입니다.

+0

예. 이 경우 공장을 사용하는 방법에 대해 자세히 설명해 주시겠습니까? – cometta

+0

이 이에 대한 일반적인 도움말을 사용하고 있습니까? – cometta

+1

당신이 묘사 한 것에서 (POJO 내의 위젯), 특정 맞춤 위젯을 pojos에 매핑하려는 것처럼 보입니다. 예 : POJO가 A 타입이라면 위젯 A로 나타내야합니다. 그렇다면 위젯을 정의하고 팩토리 클래스가 공장에 전달하는 POJO를 기반으로 적절한 위젯을 반환하도록해야합니다 여기 예제를 확인하십시오 http : //www.allapplabs.com/java_design_patterns/factory_pattern.htm – maneesh