class.getAnnotation 和 getAnnotations 无法正常工作
class.getAnnotation and getAnnotations doesn't work properly
Class SecureDispatchService
来自 gwt 这样的:
@RemoteServiceRelativePath("dispatch")
public interface SecureDispatchService extends RemoteService {
Result execute( String sessionId, Action<?> action ) throws DispatchException;
}
RemoteServiceRelativePath
:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface RemoteServiceRelativePath {
/**
* The relative path for the {@link RemoteService} implementation.
*
* @return relative path for the {@link RemoteService} implementation
*/
String value();
}
测试代码很简单:
package com.name.sbts.wbts.sm;
import net.customware.gwt.dispatch.client.secure.SecureDispatchService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
public class TestClass {
public static void main(String[] args) {
Class c = SecureDispatchService.class;
System.out.println(c.getAnnotation(RemoteServiceRelativePath.class));
System.out.println(c.getAnnotations().length);
}
}
但是结果并不想要:
null
0
我是 运行 eclipse 中的这段代码,使用 JRE1.7
SecureDispatchService
在这个来自 google 的罐子里:
gwt-dispatch-1.2.0.jar
我用mvn eclipse:eclipse
生成了项目。
这个jar文件作为eclipse项目的引用库,它的真实路径在我的.m2/repostory.
这是因为 gwt-dispatch
项目是使用旧 gwt-user
依赖项(gwt 版本 2.0.4
)编译的。在这个版本的gwt中RemoteServiceRelativePath
annotation doesn't have @Retention(RetentionPolicy.RUNTIME)
就可以了,所以RemoteServiceRelativePath
注解在运行时是不可用的。
Class SecureDispatchService
来自 gwt 这样的:
@RemoteServiceRelativePath("dispatch")
public interface SecureDispatchService extends RemoteService {
Result execute( String sessionId, Action<?> action ) throws DispatchException;
}
RemoteServiceRelativePath
:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface RemoteServiceRelativePath {
/**
* The relative path for the {@link RemoteService} implementation.
*
* @return relative path for the {@link RemoteService} implementation
*/
String value();
}
测试代码很简单:
package com.name.sbts.wbts.sm;
import net.customware.gwt.dispatch.client.secure.SecureDispatchService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
public class TestClass {
public static void main(String[] args) {
Class c = SecureDispatchService.class;
System.out.println(c.getAnnotation(RemoteServiceRelativePath.class));
System.out.println(c.getAnnotations().length);
}
}
但是结果并不想要:
null
0
我是 运行 eclipse 中的这段代码,使用 JRE1.7
SecureDispatchService
在这个来自 google 的罐子里:
gwt-dispatch-1.2.0.jar
我用mvn eclipse:eclipse
生成了项目。
这个jar文件作为eclipse项目的引用库,它的真实路径在我的.m2/repostory.
这是因为 gwt-dispatch
项目是使用旧 gwt-user
依赖项(gwt 版本 2.0.4
)编译的。在这个版本的gwt中RemoteServiceRelativePath
annotation doesn't have @Retention(RetentionPolicy.RUNTIME)
就可以了,所以RemoteServiceRelativePath
注解在运行时是不可用的。