带有泛型的Java反射方法调用

带有泛型的Java反射方法调用,java,generics,reflection,Java,Generics,Reflection,鉴于此方法: public final void foo (List<MyClass> bar){ .. } 由于明显的原因,这似乎是不正确的,但getMethod的输入组合在其他情况下似乎不起作用。我在谷歌上到处搜索都没有结果。有什么建议吗 干杯,谢谢 对我有用 import java.util.ArrayList; import java.util.List; public class Argh { public void foo(final List<Argh

鉴于此方法:

public final void foo (List<MyClass> bar){ .. }
由于明显的原因,这似乎是不正确的,但getMethod的输入组合在其他情况下似乎不起作用。我在谷歌上到处搜索都没有结果。有什么建议吗

干杯,谢谢

对我有用

import java.util.ArrayList;
import java.util.List;

public class Argh
{
    public void foo(final List<Argh> arghs)
    {
        System.out.println("Received " + arghs);
    }

    public static void main(final String[] args) throws Exception
    {
        Argh.class.getMethod("foo", List.class).invoke(new Argh(), new ArrayList<Argh>());
    }
}
import java.util.ArrayList;
导入java.util.List;
公共类Argh
{
公共作废foo(最终列表参数)
{
系统输出打印项次(“接收”+arghs);
}
公共静态void main(最终字符串[]args)引发异常
{
Argh.class.getMethod(“foo”,List.class).invoke(new Argh(),new ArrayList());
}
}
对我有用

import java.util.ArrayList;
import java.util.List;

public class Argh
{
    public void foo(final List<Argh> arghs)
    {
        System.out.println("Received " + arghs);
    }

    public static void main(final String[] args) throws Exception
    {
        Argh.class.getMethod("foo", List.class).invoke(new Argh(), new ArrayList<Argh>());
    }
}
import java.util.ArrayList;
导入java.util.List;
公共类Argh
{
公共作废foo(最终列表参数)
{
系统输出打印项次(“接收”+arghs);
}
公共静态void main(最终字符串[]args)引发异常
{
Argh.class.getMethod(“foo”,List.class).invoke(new Argh(),new ArrayList());
}
}
和编译时一样,类型擦除去掉了泛型信息


与编译时类型擦除一样,它去掉了泛型信息。

显示实际的反射代码。另一方面,如果你有一个T foo(R输入),那么擦除后的签名将是foo(Object),用于反射;请注意,返回类型不是签名的一部分。请向我们显示实际的反射代码。另一方面,如果你有一个T foo(R输入),那么擦除后的签名将是foo(Object),用于反射;注意返回类型不是签名的一部分。
import java.util.*;
import java.lang.reflect.*;
public class Test {
    public final void foo (List<String> bar){
        for(String x : bar)
            System.out.println(x);
    }
    public static void main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
        Test x = new Test();
        List<String> y = new ArrayList<String>(); y.add("asd"); y.add("bsd");
        x.getClass().getMethod("foo",List.class).invoke(x,y);
    }
}
public final void foo (List bar)