[英]Method object with generics for return type?
您無法擴展Method
因為盡管它不是final
,但它沒有可訪問的構造函數。
您可以改用合成來做類似的事情。
public final class MyMethod<T> {
private final Method method;
public MyMethod(Method method) {
this.method = method;
}
public T invoke(Object o, Object... args) throws IllegalAccessException, InvocationTargetException {
return (T) method.invoke(o, args); // Unchecked cast
}
}
你可以這樣使用
MyMethod<Integer> myMethod = new MyMethod<>(BigInteger.class.getMethod("intValue"));
Integer a = myMethod.invoke(new BigInteger("42"));
但是,這不好(例如,未檢查的強制轉換和已檢查的異常)。
我懷疑這是XY問題。 有關您究竟需要什么的一些細節將使回答變得更容易。
正如JB Nizet所說,您不能更改JRE方法,但是可以在執行之前,執行之后或執行前后做一些事情,並且可以更改具有AOP技術的方法(如AspectJ,spring)返回的返回值/對象Google,它將成為您的朋友
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.