非常简单的Java动态转换

非常简单的Java动态转换,第1张

非常简单的Java动态转换

您想通过名称 实例化 一个类吗?

首先,您需要创建一个

Class<?>
对象

Class<?> cls = Class.forName(strClassName);

然后实例化它(注意,这会引发各种异常-访问冲突,没有参数就

ClassNotFound
没有 公共 构造函数等)

Object instance = cls.newInstance();

然后可以将其转换为:

return (SomeClass) instance;

请确保您了解以下两者之间的区别:

  1. (大约是文件名)
  2. 对象 (本质上是 类型 信息)
  3. 实例 (此类型的实际对象)

如果需要,还可以将

cls
对象转换为type
Class<? extends SomeClass>
。但是,它并不能给您太多。您可以内联到:

return (SomeClass)(Class.forName(strClassName).newInstance());

哦,但是您 可以

cls
在实例化对象之前对对象进行类型检查。因此,只有在它满足您的API(实现您要获取的接口)的情况下,您才能实例化它。

编辑:向 反射 添加更多示例代码。

例如:

if (cls.isInstance(request)) {  // ...}

对于调用方法,您需要知道可以转换为的接口,或者使用 反射 (对象的

getMethod
方法
cls
):

Method getRequest = cls.getMethod("getRequest");getRequest.invoke(request);


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5427156.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-11
下一篇2022-12-11

发表评论

登录后才能评论

评论列表(0条)

    保存