寻找 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;
}
美好的一天,
我有一个关于 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;
}