泛型的使用

1.泛型类和泛型方法

(1)格式
1
2
类名<泛型>
方法名(泛型)
(2)示例

例如
a.泛型类

1
2
3
4
5
public class MyClass<T>{
public void print(T t){
System.out.println(t);
}
}

b.实现方法

1
2
3
4
5
6
7
8
9
public class Test01{
public static void main(String[] args){
MyClass<String> mc1 = new MyClass<>();
mc1.print("hello1");

MyClass<Integer> mc2 = new MyClass();
mc2.print(99);
}
}

2.泛型接口和泛型方法

(1)格式
1
2
接口<泛型>
方法名(泛型)
(2)示例

例如
a.接口

1
2
3
public interface MyInter<O>{
public abstract void print(O o);
}

b.接口实现

1
2
3
4
5
6
public class MyInterImpl<O> implements MyInter<O>{
@Overide
public void print(O o){
System.out.println(o);
}
}

c.调用

1
2
3
4
5
6
7
8
9
10
public class Test02{
public static void main(String[] args){
MyInterImpl<String> m1 = new MyInterImpl<>();
m1.print("world");

MyInterImpl<Double> m2 = new MyInterImpl();
m2.print(8.8)

}
}

3.泛型通配符

(1)概念
1
2
3
4
5
6
7
8
9
泛型的通配符
?:代表任意的数据类型
使用方式:
不能创建对象使用
只能作为方法的参数使用
泛型的上限限定
? extends E 代表使用的泛型只能是E类型的子类/本身
泛型类的下限限定
? super E 代表使用的泛型只能是E类型的父类/本身
(2)示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Test02 {
public static void main(String[] args) {
demo1();
}
private static void demo1() {
ArrayList<String> list1 = new ArrayList<>();
list1.add("hello");
list1.add("world");
list1.add("beatiful");
print(list1);

ArrayList<Integer> list2 = new ArrayList<>();
list2.add(100);
list2.add(200);
list2.add(300);
list2.add(500);
print(list2);
}
/**
* 泛型通配符的使用
* @param list
*/
private static void print(ArrayList<?> list){
for (Object o : list) {
System.out.println(o);
}
}
}
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2021 Movle
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信