首页 >后端开发 >C++ >如何使用运行时类型参数调用通用 Java 方法?

如何使用运行时类型参数调用通用 Java 方法?

Patricia Arquette
Patricia Arquette原创
2024-12-30 20:25:10184浏览

How Can I Invoke a Generic Java Method with Runtime Type Arguments?

使用运行时类型参数调用泛型方法

问题:

您想要动态调用泛型方法,在运行时指定类型参数。但是,Java 不允许在泛型方法调用中直接进行类型参数解析。

解决方案:

要实现此目的,请使用 Java反射:

// Get the generic method
Method<T> method = MyTestClass.class.getMethod("myGenericMethod");

// Create a type array for the type arguments
Type[] typeArguments = { new TypeReference<T>() {}.getType() };

// Make the generic method specific
Method<T> specificMethod = method.makeGenericMethod(typeArguments);

// Invoke the specific method with an instance and parameters
T result = specificMethod.invoke(myInstance, parameters);

说明:

  1. 获取泛型方法:使用 getMethod() 从class.
  2. 创建类型数组:创建一个 Type[] 数组,用于保存泛型方法的类型参数。
  3. 生成特定方法:使用 makeGenericMethod() 创建具有指定类型参数的新方法实例。
  4. 调用: 使用invoke() 和实例调用特定方法

附加说明:

  • 您可以使用 newInstance() 从接口创建泛型类型的新实例。
  • 反射允许在运行时动态解析类型参数。
  • 泛型提供编译时类型检查,但反射允许动态场景中的灵活性。

以上是如何使用运行时类型参数调用通用 Java 方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn