2011-09-04 6 views
0

내가 자바 스크립트로 컴파일하지만 호스트 모드뿐만 아니라 디자이너에 실패 할 때 잘 작동 JavaScriptObjectsGWT JavaScriptObject는

public class JsList<T extends JavaScriptObject> extends JavaScriptObject implements List<T> 
{ etc...} 

를 처리하는 목록으로 목록에 과부하를 시도 실패합니다. 함수가 오버로드 기능을 찾기 위해 시도 할 때이 문제는 JsList의 type T는 JavaScriptObject에 삭제를 동일시하고 목록의 type T는 Object로 동일시하기 때문에 실패,

CompilingClassLoader::findOverloadUsingErasure(JClassType implementingType, JMethod intfMethod) 

에서 유래한다. 이 문제를 해결하기위한 제안 사항이 있습니까?

답변

0

인터페이스가 하나의 JSO만으로 구현 될 수 있다고 가정 할 때, 유형 변수의 경계를 제거하는 것은 어떻습니까?

대신 JSO가 인터페이스 자체를 구현하지 않고 List를 구현하는 객체로 JSO를 래핑 할 수도 있습니다.

부수적으로 Java List에는 JS 배열보다 많은 제약 조건이 있습니다. 예를 들어, JS에서 수행 할 수 있습니다 당신은 자바에서 할 수없는

var arr = []; 
// arr.length is 0 
arr[3] = "foo"; 
// arr.length is now 4 
arr.length = 2; 
// arr.length is now 2 
// arr[3] can be retrieved but is 'undefined' 

:

List<String> list = new ArrayList<String>(); 
// list.size() is 0 
list.put(3, "foo"); // ← throws an IndexOutOfBoundsException 
// list.get(3) would throw too