【问题标题】:What does lacking of generics mean in programming?编程中缺少泛型意味着什么?
【发布时间】:2010-08-03 05:44:41
【问题描述】:

在 cmets 到 this answer 有人说

我不得不对推荐 Apache Commons 投反对票,因为这真的是 50:50 的机会来判断您是否发现有用的东西。那里肯定有很多宝石,但也有很多不好的和过时的东西,例如,在这一点上令人担忧的泛型缺乏是不可原谅的——即使是引入它们的 Java 5 也已达到 EOL!

在这种情况下,“缺乏泛型”是什么意思?你能通俗地解释一下吗?

【问题讨论】:

  • 我想用外行的话来看看这个问题。你在问什么?如果相关问题可以链接到另一个问题,但您的问题应该列在here

标签: generics programming-languages


【解决方案1】:

提到的“缺乏泛型”是指 API 公开了非泛型方法和类,即在 Object 上工作的方法,通常会强制用户使用强制转换并失去一些类型安全性。通用 API 具有类型参数并且可以处理这些类型的对象,而不需要强制转换和维护编译时类型安全。比较使用ArrayList 和使用ArrayList<T>

// Non-generic (before Java 5)
ArrayList l = /*...*/;
Foo x = (Foo) l.get(42);
l.add(new Bar()); // Compiler is fine with this

// Generic (from Java 5 onwards)
ArrayList<Foo> l = /*...*/;
Foo x = l.get(42);
l.add(new Bar()); // Compiler complains that you can't add Bar to a list of Foo

【讨论】:

    【解决方案2】:

    如果没有泛型,您将无法“概括”您的代码,也就是说,您将无法将相同的代码用于不同的对象类型。

    【讨论】:

      【解决方案3】:

      泛型允许您创建适用于不同类型对象的方法和类。如果不使用泛型,您将不得不在对象类型之间进行转换,并失去一些类型安全性。

      获取更多关于什么是泛型here的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-05
        • 2010-10-21
        • 2014-02-08
        • 2014-08-01
        • 1970-01-01
        • 2018-04-08
        • 2013-01-16
        • 1970-01-01
        相关资源
        最近更新 更多