栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

非常简单的Java动态转换

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

非常简单的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);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451630.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号