美好的一天,
我有一个关于Java反思的问题。
我想使用以下构造函数为类PacketPlayOutPlayerInfo
实现构造函数:
public PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction paramEnumPlayerInfoAction, Iterable<EntityPlayer> paramIterable){
[...]
}
要构建构造函数,我使用此方法
Constructor<?> packetPlayerInfoConstructor = ReflectionHandler.getNMSClass("PacketPlayOutPlayerInfo").getConstructor(
ReflectionHandler.getNMSClass("PacketPlayOutPlayerInfo$EnumPlayerInfoAction"), _____);
第一个参数工作得非常好,但是我不得不得到Iterable接口的类来使构造函数工作......(或者我呢?)
提前致谢并度过愉快的一天,
rapt0r
答案 0 :(得分:0)
通常使用Java反射,检索方法(或构造函数)的类型参数是类型擦除后的参数,即在您的示例中,类型参数是PacketPlayOutPlayerInfo.EnumPlayerInfoAction和类型擦除后的Iterable,因此您的注释答案为#34 ;(或我)&#34;应该是,你应该只需要通用类型。
您不能在类中创建两个仅由参数化类型参数不同的方法,因此上述方法不会使任何有效的Java方法无法访问。例如,尝试声明以下两种方法在Java类中是不合法的:
public int sameName(List<String> stringList) {
return 1;
}
public int sameName(List<Integer> intList) {
return 1;
}