举例没有泛型的代码和有泛型的代码的差别
时间: 2024-03-01 17:53:07 浏览: 19
好的,举个简单的例子。
没有泛型的代码:
```java
public class MyArrayList {
private Object[] data;
private int size;
public MyArrayList() {
data = new Object[10];
size = 0;
}
public void add(Object obj) {
if (size == data.length) {
Object[] newData = new Object[data.length * 2];
for (int i = 0; i < data.length; i++) {
newData[i] = data[i];
}
data = newData;
}
data[size++] = obj;
}
public Object get(int index) {
if (index < 0 || index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
public int size() {
return size;
}
}
```
有泛型的代码:
```java
public class MyArrayList<T> {
private T[] data;
private int size;
public MyArrayList() {
data = (T[]) new Object[10];
size = 0;
}
public void add(T obj) {
if (size == data.length) {
T[] newData = (T[]) new Object[data.length * 2];
for (int i = 0; i < data.length; i++) {
newData[i] = data[i];
}
data = newData;
}
data[size++] = obj;
}
public T get(int index) {
if (index < 0 || index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
public int size() {
return size;
}
}
```
可以看到,没有泛型的代码中使用了 Object 类型来代表任何类型的对象,而有泛型的代码中使用了 T 类型参数来代表任何类型。这样做的好处是,有泛型的代码在编译期就可以检查类型安全,避免了类型转换错误的问题。而没有泛型的代码则需要在运行期才能发现类型错误,容易出现运行时异常。