基于java中泛型的总结分析

定义一个坐标点类，要求能保存各种类型的数据，如：整形，浮点型，和字符串类型

//这是定义的坐标点类
class Point {
private Object x;
private Object y;

//用Object来表示不确定的类型
public Point(Object x, Object y) {
this.setX(x);
this.setY(y);
}
public void setX(Object x) {
this.x = x;
}
public Object getX() {
return x;
}
public void setY(Object y) {
this.y = y;
}
public Object getY() {
return y;
}

}

//测试类
public class Demo {
public static void main(String[] args) {
System.out.println("用浮点数表示坐标: ");
Point p = new Point(12.23,23.21);
//这里把Object类转为Double类，然后自动拆箱，下面两种一样
System.out.println("X的坐标 " + (Double)p.getX());
System.out.println("Y的坐标 " + (Double)p.getY());
System.out.println();

System.out.println("用整数表示坐标: ");
Point p2 = new Point(12, 23);
System.out.println("X的坐标 " + (Integer)p2.getX());
System.out.println("Y的坐标 " + (Integer)p2.getY());
System.out.println();

System.out.println("用字符串表示坐标: ");
Point p3 = new Point("北纬29度", "东经113度");
System.out.println("X的坐标 " + (String)p3.getX());
System.out.println("Y的坐标 " + (String)p3.getY());
}
}

class Point<T> {
//这里用T来表示不确定的类型
private T x;
private T y;
public Point(T x, T y) {
this.setX(x);
this.setY(y);
}
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}

public class Demo {
public static void main(String[] args) {
System.out.println("用浮点数表示坐标: ");
//用泛型改写后，使用数据无需再做向下转型处理
Point<Double> p = new Point<Double>(12.23,23.21);
System.out.println("X的坐标 " + p.getX());
System.out.println("Y的坐标 " + p.getY());
System.out.println();

System.out.println("用整数表示坐标: ");
Point<Integer> p2 = new Point<Integer>(12, 23);
System.out.println("X的坐标 " + p2.getX());
System.out.println("Y的坐标 " + p2.getY());
System.out.println();

System.out.println("用字符串表示坐标: ");
Point<String> p3 = new Point<String>("北纬29度", "东经113度");
System.out.println("X的坐标 " + p3.getX());
System.out.println("Y的坐标 " + p3.getY());
}
}

Point<Double> p = new Point<Double>("北纬29度",12.22);

Point p = new Point(22.11,23.21);

//类名后面不再定义泛型
class Print {
//在方法中定义泛型
public <T> void print(T t) {
System.out.println(t);
}

public <E> void show(E e) {
System.out.println(e);
}
}

public class Demo {
public static void main(String[] args) {
Print p = new Print();
p.print(12);
p.print("hello");
p.show(new Integer(33));
p.show(23);
}
}

//定义一个泛型接口
interface Inter<T>
{
public void print(T t);
}

//实现方式一：
class InterDemo1 implements Inter<String> {
public void print(String t) {
System.out.println("print: " + t);
}
}

//实现方式二：
class InterDemo2<T> implements Inter<T> {
public void print(T t) {
System.out.println("print: " + t);
}
}

class Demo {
public static void main(String[] args) {
InterDemo1 id1 = new InterDemo1();
id1.print("hello");
InterDemo2<Integer> id2 = new InterDemo2<Integer>();
id2.print(new Integer(23));
}
}

• 本文已收录于以下专栏：

【总结】Effective java经验之谈，泛型

• 2015年04月15日 20:02
• 1279

java集合框架---泛型总结

/* 泛型：指定集合类型，在运行而不是编译时时就发现问题，消除安全隐患。避免强转。 */ package pack; import java.util.ArrayList; import java....
• sjtu_chenchen
• 2015年04月23日 19:19
• 1015

Java泛型使用小结

• u013478336
• 2016年07月10日 23:11
• 4995

Java基础知识总结（七）——泛型

• Zerohuan
• 2015年12月31日 00:15
• 1088

三句话总结JAVA泛型通配符（PECS）

• yiifaa
• 2017年06月18日 16:24
• 316

Java中的范型类型强制转化注意

class Person { } class Student extends Person { } public class Test { public static void main...
• u010746364
• 2016年04月26日 07:45
• 764

利用泛型封装DAO层（万能DAO）

• miachen520
• 2016年07月23日 17:24
• 2893

java学习中对泛型、Map、Collectiongs的一些理解

• dong24333
• 2016年08月14日 20:59
• 290

Java泛型中T和问号（通配符）的区别

• ikownyou
• 2017年03月24日 14:17
• 5199

JAVA 泛型的使用场景一

• luojinbai
• 2015年06月19日 08:33
• 1507

举报原因： 您举报文章：基于java中泛型的总结分析 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)