簡體   English   中英

方法對象與泛型的返回類型?

[英]Method object with generics for return type?

有什么方法可以將泛型與Java中的Method類一起使用? 我想在Method對象上調用invoke() ,並讓它返回方法的實際返回類型,而不是Object

您無法擴展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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM