Java中的generics是什么?

我不太了解generics。 他们做什么,你怎么使用它们?

从我所知道的,他们所做的只是在编译时检查返回types而不是运行时间,以避免在抛出错误之前运行程序。 这是他们做的吗?

例如:

public <Integer> int test() { return 'c'; //will throw error at compile instead of runtime } 

我正在读关于generics是如何随意的,你应该只使用大写字母? 这有点令人困惑。

generics允许你自定义一个“ generics ”方法或类到你正在使用的任何types。 例如,假设您有一个将两个数字相加的方法。 为了使用这些types,你可能需要创build这个方法的多个版本。 例如:

 public int Add(int a, int b) public double Add(double a, double b) public float Add(float a, float b) 

generics允许您创build一个为调用它的types定制的单一方法。

 public T Add<T>(T a, T b) 

T代替你使用的任何types。

请参阅Angelika Langer常见问题解答中的基础知识 – 这是与您可能find的Javagenerics相关的所有内容的最佳解释。 也就是说,generics最初的主要目标是启用“types”集合。

我能想到的最简单的方法来解释generics是好的复制粘贴隐喻:

 public <COPY> PASTE addTwoThings(PASTE a, PASTE b) { return a + b; } 

你指定一个types(在<COPY>部分),java在整个代码块中使用这个types,并且确保types是兼容的。 通过这样做,你不必写:

  • addTwoIntegers
  • addTwoStrings
  • addTwoMyObjects

不要混淆这个预处理器,但是Java只需要给出一个types。