如何使用通配符 class<?> 结果的方法

How to use methods of a wildcard class<?> result

我正在尝试构建一个通用工具来查找休眠 class 并通过元数据使用其方法。

所以从数据库中我得到 1: "TABLENAME" 2. "methodname"

第 1 步。找到休眠已完成。

Class<?> result = generator.getClassFromTableName("TABLENAME");

第 2 步。使用返回的 class 中的方法是我没有得到的。

我需要使用 classloader 还是通过 result.getConstructors 找到它?

最简单的方法是我最终得到一个 'TableName' 的实例并且能够访问它的所有方法。希望清楚!

感谢@rsp 让我们放心地在 Reflection 中寻找。第一次深入研究它,最后它非常简单。

  • 要从字符串参数

    加载class的类加载器
  • getConstructor 到 找到正确的构造函数并将其与 newInstance()

    一起使用
  • getDeclaredMethod 找到正确的方法并将其与 Invoke 和 对象实例

     Class< ? > testdataClass = getClass().getClassLoader().loadClass(testDataClassname);
     Constructor<?> tesdataClassConstructor = Objects.requireNonNull(testdataClass).getConstructor(datacontext);
     Object testdataClassObject = tesdataClassConstructor.newInstance(dc);
     Method buildMethod = testdataClass.getDeclaredMethod("build");
     return buildMethod.invoke(testdataClassObject);