2010-04-03 5 views
3

Google지도 API 문제 :주조 내가 다음 줄을 실행하기 위해 노력하고있어

Directions.loadFromWaypoints((Waypoint[])waypoints.toArray(), opts); 

을하지만 점점 해요 :

23:41:44.595 [ERROR] [carathome] Uncaught exception escaped 
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.google.gwt.maps.client.geocode.Waypoint; 
    at com.presasystems.gwt.carathome.client.widgets.MostrarLinhasPanel$1$1.onSuccess(MostrarLinhasPanel.java:72) 
    at com.presasystems.gwt.carathome.client.widgets.MostrarLinhasPanel$1$1.onSuccess(MostrarLinhasPanel.java:1) 
    at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:216) 
    at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287) 
    at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:393) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 
    at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713) 
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165) 
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264) 
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java) 
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188) 
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 
    at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1668) 
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401) 
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222) 
    at java.lang.Thread.run(Unknown Source) 

이유는 무엇입니까? 이 캐스팅이 작동해서는 안됩니까? 나는 이것을 우아하게 어떻게 할 수 있는가? 사전

답변

1

에서 덕분에

Directions.loadFromWaypoints((Waypoint[])(waypoints.toArray()), opts); 

는 또한

Waypoint[] array = new Waypoint[0]; 
array = waypoints.toArray(array); 
Directions.loadFromWaypoints(array, opts); 

이상 단순히

Waypoint[] array = waypoints.toArray(new Waypoint[0]); 
Directions.loadFromWaypoints(array, opts); 

List#toArray(T[] a) 참조하십시오.

부록 : 처음에는 캐스트가 우선 순위 문제라고 생각했습니다. 이 List#toArray(T[] a)이면 "반환 된 배열의 런타임 유형이 지정된 배열의 런타임 유형"임을 보장함으로써 명시 적 형 변환이 필요하지 않습니다. 실제로, 그것은 "배열 기반 API와 컬렉션 기반 API 사이의 다리 역할을합니다."

+0

작동하지 않았습니다. 죄송합니다. – Thiago

+0

API에 대한 링크를 게시 할 수 있습니까? – trashgod

+0

http://gwt-google-apis.googlecode.com/svn/javadoc/maps/1.0/index.html – Thiago

관련 문제