如何使用通配符 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);
我正在尝试构建一个通用工具来查找休眠 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);