什么是java中的泛型?

tzcvj98z  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(288)

很难说出这里要问什么。这个问题模棱两可,含糊不清,不完整,过于宽泛,或者是修辞性的,不能以现在的形式得到合理的回答。有关澄清此问题以便重新打开的帮助,请访问帮助中心。
9年前关门了。
我真的不明白泛型的意义。它们做什么,你怎么用它们?
据我所知,它们所做的只是在编译时而不是运行时检查返回类型,以避免在抛出错误之前运行程序。他们就这么干吗?
例如:

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

我读到一些关于泛型是如何任意的,你应该只使用大写字母?这有点让人困惑。

gwbalxhn

gwbalxhn1#

我能想到的解释泛型的最简单的方法是好的ol'copy-paste隐喻:

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

指定类型(在 <COPY> 部分)和java在整个代码块中使用这个类型,它将确保这些类型是兼容的。这样做,你就不用写:
添加两个整数
添加两个字符串
添加两个myobjects
别把它和预处理器混淆了,java只希望给定一个类型。

qvtsj1bj

qvtsj1bj2#

请参阅angelika langer的faq中的基础知识—这是您可能找到的与java泛型相关的所有内容的最佳解释。也就是说,泛型最初的主要目标是启用“类型化”集合。

a7qyws3x

a7qyws3x3#

泛型允许您将“泛型”方法或类自定义为您正在使用的任何类型。例如,假设您有一个将两个数字相加的方法。为了使用类型本身,您可能必须创建此方法的多个版本。例如:

public int Add(int a, int b)

public double Add(double a, double b)

public float Add(float a, float b)

泛型允许您创建一个为调用它的类型定制的方法。

public T Add<T>(T a, T b)
``` `T` 取代了你所用的任何类型。

相关问题