2017-03-27 29 views
0

美好的一天,寻找一个Iterable的类来创建一个使用反射的构造函数

我有一个关于Java中反射的问题。 我想用下面的构造方法实例化一个类PacketPlayOutPlayerInfo构造:

public PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction paramEnumPlayerInfoAction, Iterable<EntityPlayer> paramIterable){ 
    [...] 
} 

要构建我用这个方法

Constructor<?> packetPlayerInfoConstructor = ReflectionHandler.getNMSClass("PacketPlayOutPlayerInfo").getConstructor(
           ReflectionHandler.getNMSClass("PacketPlayOutPlayerInfo$EnumPlayerInfoAction"), _____); 

第一个参数是工作完全正常的构造,但我无论如何都以获得接口Iterable的类来获取构造函数的工作...(或我?)

在此先感谢,并有美好的一天,

rapt0r

+0

什么是ReflectionHandler? getNMSClass()方法的返回类型是什么? –

回答

0

一般用Java反射用于检索的方法(或构造函数)的类型参数的数据类型擦除后,即参数在您的示例类型参数是PacketPlayOutPlayerInfo.EnumPlayerInfoAction和可迭代类型擦除后,所以回答你评论“(或我)”应该是否,你应该只需要泛型类型。

您不能创建在一个类中两个方法,只有他们的参数类型参数不同,因此上面并没有做出任何有效的Java方法无法访问。例如,试图声明以下两种方法在Java类中是不合法的:

public int sameName(List<String> stringList) { 
    return 1; 
} 

public int sameName(List<Integer> intList) { 
    return 1; 
} 
相关问题