首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于公共静态<E>中的<E>的Java

关于公共静态<E>中的<E>的Java
EN

Stack Overflow用户
提问于 2012-10-31 23:54:00
回答 3查看 2.7K关注 0票数 9

使用Java:我不想浪费人们的时间并在这里发布这篇文章,但是我的谷歌搜索技能让我失败了,我找不到答案。我查看了一些提供的代码,他们使用

代码语言:javascript
复制
public static <E> void printTree(TwoFourTree<E> tf)

(作为参考,我们将从红黑树转换为2-4树)。当我第一次解决这个问题时,我会使用而不是甚至不包含在public static void的初始方法声明中。然而,我遇到了问题,尽管在其他地方使用<Integer>而不是<E>,但添加这个<E>解决了我所有的问题。

所以我的问题是,谁能给我解释一下<E>到底是做什么的?

代码语言:javascript
复制
public static <E> void
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-01 00:00:40

这是一个名为Generics的特性。

为什么要使用泛型?好的,下面给出一个场景,它们是有用的。回到“糟糕的过去”,如果你想拥有一个可以处理任何对象的类,你必须用对象来声明它的所有接口,例如

代码语言:javascript
复制
public class MySuperList
{
    public void Add(object a) { }
}

然而,这很糟糕,因为你没有类型安全--你可以像下面这样写代码:

代码语言:javascript
复制
// Your code
MySuperList list = new MySuperList();
cars.Add(new Car("Ford Mondeo"));// Works
cars.Add(new Fish("Herring")); // Works - which is a shame as a Fish is not a car!

泛型解决了这个问题,允许你以泛型的方式强类型你的类。例如:

代码语言:javascript
复制
public class MySuperList<T>
{
    // Add method will only accept instances of type T.
    public void Add(T a) { }
}

// Your code
MySuperList<Cars> list = new MySuperList<Cars>();
cars.Add(new Car("Ford Mondeo"));// Works
cars.Add(new Fish("Herring")); // Compile-time error.
票数 3
EN

Stack Overflow用户

发布于 2012-10-31 23:56:52

它创建了一个泛型方法;也就是说,它允许您使用包含任何类型对象的TwoFourTree作为参数(在本例中)。

例如,如果您希望只接受包含List类型的对象的TwoFourTree,则可以将该方法定义为

代码语言:javascript
复制
public static <E extends List> void ...

如果只需要Number对象(IntegerDouble等)你会这么做的

代码语言:javascript
复制
public static <E extends Number> void ...

这就是为什么创建这样的方法实际上很有用的原因。我应该指出的是,乐趣并没有到此为止,你可以使用多个类型参数来做同样的事情,例如:

代码语言:javascript
复制
public static <T, S extends Number> void ...

如果您想了解更多,我想您可能会发现阅读有关泛型方法的this教程会很有帮助。

票数 0
EN

Stack Overflow用户

发布于 2012-11-01 00:00:19

而不是写作

代码语言:javascript
复制
public static Integer ...
public static Double ...
public static Long ...

..。

您所要做的就是创建泛型方法

代码语言:javascript
复制
public static <E> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13161902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档