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。