gpt4 book ai didi

Java 泛型类型和对象类

转载 作者:行者123 更新时间:2023-12-01 07:56:22 26 4
gpt4 key购买 nike

我需要知道java泛型类型和Object类之间有什么区别。这是两个代码,都可以正常工作,我只需要知道它们之间有什么区别:

使用对象类的程序 1: 包a;

public class Generic {
private Object[] datastore;
private int size;
private int pos;

public Generic(int numEl) {
size = numEl;
pos = 0;
datastore = new Object[size];
}

public void add(Object a){
datastore[pos] = a;
pos++;
}

public String toString(){
String elements ="";
for (int i=0; i<pos; i++) {
elements += datastore[i] + " ";
}

return elements;
}
}

使用通用类型的程序 2: 包a;

public class Generic<T> {
private T[] datastore;
private int size;
private int pos;

public Generic(int numEl){
size = numEl;
pos = 0;
datastore = (T[]) new Object[size];
}

public void add(T a) {
datastore[pos] = a;
pos++;
}

public String toString(){
String elements ="";
for (int i=0; i<pos; i++) {
elements += datastore[i] + " ";
}

return elements;
}
}

最佳答案

由于 Type Erasure ,用于在 Java 中实现泛型的技术,这些代码片段在运行时没有区别。

但是,在编译时,第二个代码片段提供了更好的代码安全性。

例如,它确保数组数据存储内的所有对象具有相同的类型。第一个代码段允许您将不同类型的对象添加到数据存储,因为所有对象都派生自Object。然而,第二个代码片段要求对 add 的所有调用都提供与类型 T(该类的泛型类型参数)兼容的对象。

关于Java 泛型类型和对象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com