2012-08-22 40 views
-1

我刚刚创建了这样一个类:NameOfTheClass<Raeaeraear>。这是什么意思?为什么我可以放任何我想要的随机东西?Java - 用'<>'创建类时,它意味着什么?

+14

查看http://docs.oracle.com/javase/tutorial/java/generics/ –

+2

@JonSkeet我可以向您发送电子邮件的问题吗? :P – alfasin

+3

@HovercraftFullOfEels我只是在开玩笑[*这*](http://msmvps.com/blogs/jon_skeet/archive/2012/08/22/stack-overflow-and-personal-emails.aspx) – alfasin

回答

1

这就是所谓的泛型。泛型是用来“说”的类什么样类型的它会一起工作的情况下,采取f.ex列表

List<People> myPeopleList = new ArrayList<People>(); 

这里的列表参数。如果你看一下List接口的源代码,它是这样声明的,这意味着接口List是通用的。

public interface List<E> extends Collection<E> { 
... 

在你的情况下,类NameOfTheClass将implementet有点像这样,注意:泛型可以应用到一个类或接口。

public class NameOfTheClass<E> { 
.... 
public doSome(E e){ 
    doSomeGenericOperationWith(e); 
} 

这个类可以这样使用:

NameOfTheClass<AType> instance = new NameOfTheClass<AType>(); 
Atype yourType = ... 
doSome(yourType); 

注:任何使用doSome() - 方法的需要型A型的参数,这会由Java编译器来处理。所以如果你尝试用其他类型的方法调用,编译错误将会增加。

更多阅读:http://docs.oracle.com/javase/tutorial/java/generics/why.html

0

当您使用<>时,编译器会关闭检查泛型类型。当编译器需要知道该类型时,您不能使用例如<>

例如,

+0

非常感谢。 –

+0

这里缺少的东西?我不能确定这两行中的任何一行是如何编译的。 –

+0

@ThomasJohanEggum,第一个问题是什么? – jn1kk

相关问题