[英]Java: Is method name/signature resolution done statically (compile-time)?
[英]Java get compile-time safe method name
在使用反射類和注釋時,我發現沒有明確的方法以編譯時安全的方式引用方法名稱。 我真正想要的是能夠在注釋中引用方法。 可能看起來像:
@CallAfter(method=Foo.class.foo())
void Bar() { ... }
目前你只能使用字符串,這不是編譯時安全的..這是一個問題,因為它破壞了靜態類型的Java。 我發現的唯一解決方案就是下面的內容。 但是,這仍然無助於引用注釋中的方法。 :(
public static String methodName = null;
public static void main(String[] args) {
// .foo() is compile-time safe
loadMethodName(IFoo.class).foo();
System.out.println(methodName);
}
public static <T> T loadMethodName(Class<T> mock) {
return (T) Proxy.newProxyInstance(mock.getClassLoader(), new Class[] { mock },
(obj, method, args) -> {
methodName = method.getName();
return null;
});
}
public interface IFoo {
Object foo();
}
有沒有人有任何想法,評論或解決方案?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.