寻找 Iterable 的 class 以使用反射创建构造函数

Looking for the class of an Iterable to create a constructor using reflection

美好的一天,

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

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

为了构建构造函数,我使用了这个方法

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

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

在此先致谢,祝您有愉快的一天,

全神贯注

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

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

中是不合法的
public int sameName(List<String> stringList) {
  return 1;
}

public int sameName(List<Integer> intList) {
  return 1;
}