昆明java培训
达内昆明广州春城路

18487146383

热门课程

如何创建一个数组让它接受所有可能的类型呢?

  • 时间:2016-05-05
  • 发布:昆明Java培训
  • 来源:达内新闻

昆明java培训现在做一个代码分享,这篇文章的代码主要是针对上一篇文章的问题进行一个讲解,昆明java培训小编希望看不懂得小伙伴回到之前页面去查看。

public class SimpleCollection<T>

{

private T[] objArr;

private int index = 0;

public SimpleCollection()

{

//Error: Cannot create a generic array of T

//objArr = new T[10];

//Warning: Unchecked cast from Object[] to T[]

objArr = (T[]) new Object[10];

}

}

这个形式虽然可以做到,但是会产生一个警告。

查看ArrayList中的实现,可以发现它是使用了一个Object类型的数组:

private transient Object[] elementData;

在取出的时候(get方法中)使用了类型转换:

(E) elementData[index];

泛型和子类

List<String> ls = new ArrayList<String>(); // 1

List<Object> lo = ls; // 2

一个String类型的List是一个Object类的List吗?

不可以,Java编译器将会在第二行产生一个编译错误,因为它们的类型不匹配。

这样就避免了如果lo引入加入Object类型的对象,而ls引用试图将其转换为String类型而引发错误。所以编译器阻止了这种可能。

继承泛型类别

昆明java培训直接用例子说明:

父类:

public class Parent<T1,T2>

{

private T1 foo1;

private T2 foo2;

public T1 getFoo1()

{

return foo1;

}

public void setFoo1(T1 foo1)

{

this.foo1 = foo1;

}

public T2 getFoo2()

{

return foo2;

}

public void setFoo2(T2 foo2)

{

this.foo2 = foo2;

}   

}

子类继承父类:

public class Child<T1, T2, T3> extends Parent<T1, T2>

{

private T3 foo3;

public T3 getFoo3()

{

return foo3;

}

public void setFoo3(T3 foo3)

{

this.foo3 = foo3;

}

}

实现泛型接口

昆明java培训泛型接口举例代码分享:

public interface ParentInterface<T1,T2>

{

public void setFoo1(T1 foo1);

public void setFoo2(T2 foo2);

public T1 getFoo1();

public T2 getFoo2();

}

子类实现泛型接口:

public class ChildClass<T1,T2> implements ParentInterface<T1, T2>

{

private T1 foo1;

private T2 foo2;

@Override

public void setFoo1(T1 foo1)

{

this.foo1 = foo1;

}

@Override

public void setFoo2(T2 foo2)

{

this.foo2 = foo2;

}

@Override

public T1 getFoo1()

{

return this.foo1;

}

@Override

public T2 getFoo2()

{

return this.foo2;

}

}

上一篇:我们为什么要选择使用泛型
下一篇:泛型之中的通配符(Wildcards)使用

昆明java培训教你实现JSP页面跳转简易方法,120天后月薪过万

昆明Java培训告诉你java和大数据和互联网发展中起什么作用

昆明java培训:初学者学Java Script 5个小技巧

昆明java培训多久可以学会?120天教你成为java开发大神!

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货