0

再会,

我有一个关于 Java 反射的问题。PacketPlayOutPlayerInfo我想使用以下构造函数实例化一个类的构造函数:

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

要构建构造函数,我使用此方法

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

第一个参数工作得很好,但我必须以某种方式获得接口 Iterable 的类才能让构造函数工作......(或者我可以吗?)

提前感谢,祝你有美好的一天,

rapt0r

4

1 回答 1

0

通常使用 Java 反射,用于检索方法(或构造函数)的类型参数是类型擦除后的参数,即在您的示例中,类型参数是 PacketPlayOutPlayerInfo.EnumPlayerInfoAction 和类型擦除后的 Iterable,所以回答您的评论“(或者我) " 应该是不,你应该只需要泛型类型。

您不能在一个类中创建两个仅通过参数化类型参数不同的方法,因此上述内容不会使任何有效的 Java 方法无法访问。例如,尝试在 Java 类中声明以下两种方法是不合法的:

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

public int sameName(List<Integer> intList) {
  return 1;
}
于 2017-03-27T21:40:45.953 回答