您能否帮助我在这里理解通用概念。
// Can't create an instance of T.
class Gen<T> {
T ob;
Gen() {
ob = new T(); // Illegal!!!
}
public static void main() {
Gen<Integer> genobj = new Gen<Integer>(); //Error
}
}
编译Java代码时,所有通用类型信息都将被删除(擦除)。这意味着将类型参数替换为其绑定类型(如果未指定显式绑定,则为Object),然后应用适当的强制类型转换(由类型参数确定)以保持与类型参数指定的类型的类型兼容性。编译器还强制执行此类型兼容性。
我的问题:-为什么Java编译器在这里抛出错误?崩溃后厌恶。
谢谢
这里有几种方法可以解决:
从逻辑POV:
甚至不能保证T
您使用的任何模板参数都有默认构造函数。显然,这带来了如何处理缺少默认构造函数的问题。可能的解决方案是产生运行时错误,编译时错误或禁止任何T
不提供默认构造函数的错误。后者显然会破坏模板定义,后者允许
any T
。而且运行时错误会使事情复杂化,并产生与上述相同的问题。首先仍然要防止此行为,并抛出编译时错误。
从内部来看:
假设我们可以使用提供的代码。那怎么办?由于擦除,new T()
将产生一个Object
。但是,如果T
是Integer
?好吧,我们被搞砸了。An
Object
不是an Integer
,因此我们将获得一个普通的类广播异常。
因此,总而言之:从实用的POV来看,允许以上内容无法编译,而且破坏了Java中泛型的当前定义。
问题内容: 我刚刚在android应用程序中编写了一个函数,该函数使用Java中的标准“文件”类删除文件。即: 尽管上面的过程很简单,但我一直想知道通过“ ContentResolver”执行该操作是否有任何好处。任何意见,将不胜感激。 干杯, 杰瑞德 ------------------------------------------编辑------- 这是通过Content Resolver删
我有一个整数和零的列表。我想只过滤掉Nones。 这将删除None,但也删除0(整数)。我想以保持0(整数)的方式修改它 结果是一个列表[1,0,1,0,1,0,1,0]--
问题内容: 我发现了一个有趣的功能,称为delete by query 。我如何在jest客户程序中使用它? 谢谢! 问题答案: 您可以使用如下所示的类: 另请注意,如果您运行的是ES 2.x或更高版本,则需要先从插件安装Delete by query API 。
我正在尝试删除图像文件后,填充了关于文件的数据在一个模式。 我的jQuery如下所示: 和我的Coldfusion文件: 这是在我签入网络面板时将作为数据发送,并返回一个200,尽管我看不到cfdump的内容。 我对FE还行,对CF不是那么热,我的猜测是我的CF过于复杂,但也没有做我希望它能做的事情。我确实试着参考了我以前写的一些东西,再加上下面这个: 如何使用Ajax将Javascript变量传
删除应用是一个非常危险的操作,不开放给普通用户。 最好只有管理员才有权限删除应用 删除应用会删除与之相关的所有数据。如jenkins、consul资源及k8s相关的资源 删除 在“应用列表”页找到需要删除的应用点击“下线”按钮弹出以下对话框。 确认要删除该应用后,输入该应用名称删除。 骚等片刻该应用就消失了。
本文向大家介绍javascript cookie用法基础教程(概念,设置,读取及删除),包括了javascript cookie用法基础教程(概念,设置,读取及删除)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript cookie用法。分享给大家供大家参考,具体如下: 一、什么是 cookie? cookie 就是页面用来保存信息,比如自动登录、记住用户名等等。 二、co