繁体   English   中英

Java:通过对泛型类型的思考来调用特定方法

[英]Java: Invoke a specific method through reflections on a generic type

如何在泛型类型上调用特定方法? 我想调用一个getter / setter方法。

编辑:例如:

class BurningSun<T>
{ 
    public void kitchenSink()
    {
        Class c = Class.forName(/*What to put here for <T> ?*/)
                /*
                Reflections code
                */
    }
}

嗯,那么如何在各种框架中调用和设置bean的getter方法呢?

如果没有人告诉您,则在泛型类型内部无法在运行时获取类型参数的名称。

在运行时, BurningSun<String>BurningSun<Integer>是完全等效的,您甚至可以将其中一个BurningSun<Integer>转换为另一个(尽管这不是类型安全的)。

因此,通常,如果您确实需要在泛型对象中使用type参数的类对象,则可以让有人在构造函数中将其提供给您。

class BurningSun<T> {


    private Class<T> paramClass;

    public BurningSun(Class<T> pClass) {
        this.paramClass = pClass;
    }

    public void kitchenSink() {
        T t = paramClass.newInstance();
    }
}

(您需要在此处捕获或声明一些例外。)

好吧,所有基于反射的方法调用最简单的方法就是将对象推入方法,祈求它可以工作。 因此,投射并保持手指交叉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM