当前位置:  开发笔记 > 编程语言 > 正文

在Java中,何时应该使用"Object o"而不是泛型?

如何解决《在Java中,何时应该使用"Objecto"而不是泛型?》经验,为你挑选了2个好方法。

例如,我可以写下以下任何一个:

class example 
{
    ...

    public void insert (T data)
    {
        ...
    }
}

要么

class example
{
    ...

    public void insert (Object o)
    {
        ...
    }
}

在性能方面,两者之间是否存在显着差异?使用泛型我可以限制参数的类型,并且使用第二种方法,我想在创建对象时没有必要定义对象的类型.

另外,使用第二种方法我基本上可以在课堂上插入任何内容,对吗?而对于泛型,类中的每个元素都是相同的类型.

还有什么我想念的吗?



1> Lawrence Dol..:

编写后者的唯一原因是您必须定位较早的JVM.泛型是通过类型擦除实现的,因此它们没有运行时影响 - 只增加了编译时间检查,这将改善您的代码.

当然,如果你需要一个包含任何旧对象的集合,或者有几个没有共同超类的混合,你需要普通的Object变体(但是你的类仍然可以是通用的并用new ...实例化.对象>).



2> Johannes Sch..:

我认为你几乎已经钉了它.没有性能差异.在编译代码时,泛型被合理化(Type Erasure),并且在运行时不再存在.他们只需在需要时添加强制转换,并按照您的说明进行类型检查.Neal Gafter写了一篇关于它们如何工作的概述,Generics当前的问题以及如何在下一版Java中解决它们:http://gafter.blogspot.com/2006/11/reified-generics-for- java.html

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有