Skip to content

Commit c183eee

Browse files
committed
✨ 添加泛型示例
1 parent 42db50e commit c183eee

File tree

6 files changed

+191
-0
lines changed

6 files changed

+191
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.github.dunwu.javase.generics;
2+
3+
class GenericsDemo<T> { // 此处可以随便写标识符号,T是type的简称
4+
private T var; // var的类型由T指定,即:由外部指定
5+
6+
@Override
7+
public String toString() {
8+
return this.var.toString();
9+
}
10+
11+
public T getVar() { // 返回值的类型由外部决定
12+
return var;
13+
}
14+
15+
public void setVar(T var) { // 设置的类型也由外部决定
16+
this.var = var;
17+
}
18+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.github.dunwu.javase.generics;
2+
3+
class GenericsDemo02<T> { // 此处可以随便写标识符号,T是type的简称
4+
private T var; // var的类型由T指定,即:由外部指定
5+
6+
public GenericsDemo02(T t) {
7+
this.var = t;
8+
}
9+
10+
@Override
11+
public String toString() {
12+
return this.var.toString();
13+
}
14+
15+
public T getVar() { // 返回值的类型由外部决定
16+
return var;
17+
}
18+
19+
public void setVar(T var) { // 设置的类型也由外部决定
20+
this.var = var;
21+
}
22+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.github.dunwu.javase.generics;
2+
3+
class GenericsDemo03<X, Y> { // 此处指定了两个泛型类型
4+
private X x; // 此变量的类型由外部决定
5+
private Y y; // 此变量的类型由外部决定
6+
7+
public X getX() {
8+
return this.x;
9+
}
10+
11+
public Y getY() {
12+
return this.y;
13+
}
14+
15+
public void setX(X x) {
16+
this.x = x;
17+
}
18+
19+
public void setY(Y y) {
20+
this.y = y;
21+
}
22+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.github.dunwu.javase.generics;
2+
3+
public class NotGenericsDemo {
4+
private Object x; // 表示X坐标
5+
private Object y; // 表示Y坐标
6+
7+
public void setX(Object x) {
8+
this.x = x;
9+
}
10+
11+
public void setY(Object y) {
12+
this.y = y;
13+
}
14+
15+
public Object getX() {
16+
return this.x;
17+
}
18+
19+
public Object getY() {
20+
return this.y;
21+
}
22+
};
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package io.github.dunwu.javase.generics;
2+
3+
import org.junit.Test;
4+
5+
/**
6+
* 泛型示例
7+
* @author Zhang Peng
8+
*/
9+
public class GenericsDemoTest {
10+
@Test
11+
public void testString() {
12+
GenericsDemo<String> p = new GenericsDemo<>(); // 里面的var类型为String类型
13+
p.setVar("javase"); // 设置字符串
14+
System.out.println(p.getVar()); // 取得字符串的长度
15+
}
16+
17+
@Test
18+
public void testIntegerToObject() {
19+
GenericsDemo02<String> p = new GenericsDemo02<>("泛型"); // 里面的var类型为String类型
20+
System.out.println("内容:" + p.getVar());
21+
}
22+
23+
@Test
24+
public void testDoubleGenerics() {
25+
GenericsDemo03<Integer, String> t = new GenericsDemo03<>(); // 定义两个泛型类型的对象
26+
t.setX(12345); // 设置第一个内容
27+
t.setY("上山打老虎"); // 设置第二个内容
28+
System.out.println("上句;" + t.getX()); // 取得信息
29+
System.out.println("下句;" + t.getY()); // 取得信息
30+
}
31+
32+
@Test
33+
public void testDoubleGenerics02() {
34+
GenericsDemo03<Integer, String> p = new GenericsDemo03<>();
35+
p.setX(10); // 利用自动装箱操作:int --> Integer
36+
p.setY("北纬210度"); // 利用自动装箱操作:int --> Integer
37+
System.out.println("整数表示,X坐标为:" + p.getX());
38+
System.out.println("整数表示,Y坐标为:" + p.getY());
39+
}
40+
41+
@Test
42+
public void test() {
43+
GenericsDemo demo = new GenericsDemo();
44+
demo.setVar("泛型"); // 设置字符串
45+
System.out.println("内容:" + demo.getVar());
46+
}
47+
48+
@Test
49+
public void test2() {
50+
GenericsDemo<Object> i = new GenericsDemo<>(); // 指定Object为泛型类型
51+
i.setVar("泛型"); // 设置字符串
52+
System.out.println("内容:" + i.getVar());
53+
}
54+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package io.github.dunwu.javase.generics;
2+
3+
import org.junit.Test;
4+
5+
/**
6+
* 非泛型示例
7+
* @author Zhang Peng
8+
*/
9+
public class NotGenericsDemoTest {
10+
@Test
11+
public void testIntegerToObject() {
12+
NotGenericsDemo p = new NotGenericsDemo(); // 声明一个Point的对象
13+
p.setX(10); // 利用自动装箱操作:int --> Integer --> Object
14+
p.setY(20); // 利用自动装箱操作:int --> Integer --> Object
15+
int x = (Integer) p.getX(); // 取出数据先变为Integer,之后自动拆箱
16+
int y = (Integer) p.getY(); // 取出数据先变为Integer,之后自动拆箱
17+
System.out.println("整数表示,X坐标为:" + x);
18+
System.out.println("整数表示,Y坐标为:" + y);
19+
}
20+
21+
@Test
22+
public void testFloatToObject() {
23+
NotGenericsDemo p = new NotGenericsDemo(); // 声明一个Point的对象
24+
p.setX(10.5f); // 利用自动装箱操作:float --> Float --> Object
25+
p.setY(20.6f); // 利用自动装箱操作:float --> Float --> Object
26+
float x = (Float) p.getX(); // 取出数据先变为Integer,之后自动拆箱
27+
float y = (Float) p.getY(); // 取出数据先变为Integer,之后自动拆箱
28+
System.out.println("小数表示,X坐标为:" + x);
29+
System.out.println("小数表示,Y坐标为:" + y);
30+
}
31+
32+
@Test
33+
public void testStringToObject() {
34+
NotGenericsDemo p = new NotGenericsDemo(); // 声明一个Point的对象
35+
p.setX("东经180度"); // String --> Object
36+
p.setY("北纬210度"); // String --> Object
37+
String x = (String) p.getX(); // 取出数据先变为Integer,之后自动拆箱
38+
String y = (String) p.getY(); // 取出数据先变为Integer,之后自动拆箱
39+
System.out.println("字符串表示,X坐标为:" + x);
40+
System.out.println("字符串表示,Y坐标为:" + y);
41+
}
42+
43+
@Test
44+
public void testIntegerAndStringToObject() {
45+
NotGenericsDemo p = new NotGenericsDemo(); // 声明一个Point的对象
46+
p.setX(10); // 利用自动装箱操作:int --> Integer --> Object
47+
p.setY("北纬210度"); // String --> Object
48+
int x = (Integer) p.getX(); // 取出数据先变为Integer,之后自动拆箱
49+
int y = (Integer) p.getY(); // 取出数据先变为Integer,之后自动拆箱
50+
System.out.println("整数表示,X坐标为:" + x);
51+
System.out.println("整数表示,Y坐标为:" + y);
52+
}
53+
}

0 commit comments

Comments
 (0)