/**
* 1、Java面向对象之泛型-认识泛型
* 1、泛型是在jdk1.5之后的新功能
2、泛型可以解决数据类型的安全性问题,他的主要原理,
是在类声明的时候通过一个标识表示类中某个属性的类型
或者是某个方法的返回值及参数类型;
*
*/
public class FanXingDemo1 {
public static void main(String[] args) {
Method2();
}
public static void Method1() {
//需要时String就是String
//需要时int就是int
MyEntity<String> eMyEntity = new MyEntity<String>();
eMyEntity.setX("12");
eMyEntity.setY("15");
String x = eMyEntity.getX();
String y = eMyEntity.getY();
System.out.print(x + ":" + y);
}
public static void Method2() {
MyEntity<Integer> eMyEntity = new MyEntity<Integer>();
eMyEntity.setX(22);
eMyEntity.setY(25);
int x = eMyEntity.getX();
int y = eMyEntity.getY();
System.out.print(x + ":" + y);
}
}//class
/**
*实体类
*
*/
class MyEntity<T> {
private T x;
private T y;
public MyEntity() {
}
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;
}
}
package com.zhh.java.fanxing;
/**
*2、Java面向对象之泛型-构造方法中使用
* 构造方法使用泛型
*/
public class FanXingDemo2 {
public static void main(String[] args) {
MyGouZao<String> gouZao = new MyGouZao<String>("构造方法中使用泛型");
System.out.println(gouZao.getValue());
}
}//class
/**
*实体类
*
*/
class MyGouZao<T> {
private T value;
MyGouZao(T value) {
this.value = value;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
package com.zhh.java.fanxing;
/**
* 3、Java面向对象之泛型-指定多个泛型
* 使用多个泛型
*/
public class FanXingDemo3 {
public static void main(String[] args) {
MyEntity2<String, Integer> entity = new MyEntity2<String, Integer>();
entity.setFanXingK("字符串");
entity.setFanXingT(15);
System.out.println(entity.getFanXingK() + ":" + entity.getFanXingT());
}
}//class
/**
*实体类
*
*/
class MyEntity2<K, T> {
public K fanXingK;
public T fanXingT;
public K getFanXingK() {
return fanXingK;
}
public void setFanXingK(K fanXingK) {
this.fanXingK = fanXingK;
}
public T getFanXingT() {
return fanXingT;
}
public void setFanXingT(T fanXingT) {
this.fanXingT = fanXingT;
}
}
package com.zhh.java.fanxing;
/**
* 4、Java面向对象之泛型-通配符
通配符的使用
*
*/
public class FanXingDemo4 {
public static void main(String[] args) {
MyEntity4<String> entity4 = new MyEntity4<String>();
entity4.setKey("leifeng");
tell(entity4);
}
/**
*
*通配符:?
*就是无论什么类型都可以表示
*
*/
private static void tell(MyEntity4<?> args1) {
System.out.println(args1);
}
}//class
class MyEntity4<T> {
private T key;
public T getKey() {
return key;
}
public void setKey(T key) {
this.key = key;
}
@Override
public String toString() {
return "getKey()=" + getKey();
}
}
package com.zhh.java.fanxing;
/**
*5、Java面向对象之泛型-泛型接口
接口使用泛型
*
*/
interface MyInterface<T> {
public void say();
}
class myShiXianLei<T> implements MyInterface<T> {
public String info;
public myShiXianLei(String info) {
this.info = info;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public void say() {
}
}
public class FanXingDemo5 {
public static void main(String[] args) {
myShiXianLei<String> myShiXianLei = new myShiXianLei<String>("中国人");
System.out.println(myShiXianLei.getInfo());
}
}//class
package com.zhh.java.fanxing;
/**
* 6、Java面向对象之泛型-泛型方法
泛型方法
*
*/
class MyEntity6 {
public <T> T method(T t) {
return t;
}
}
public class FanXingDemo6 {
public static void main(String[] args) {
//传字符串
MyEntity6 entity6 = new MyEntity6();
String s = entity6.method("aaaaaaa");
System.out.println(s);
//串int
int i = entity6.method(12);
System.out.println(i);
}
}//class
package com.zhh.java.fanxing;
/**
* 7、Java面向对象之泛型-泛型数组
泛型数组
*
*/
public class FanXingDemo7 {
public static void main(String[] args) {
/**
* 传入String
*/
String[] strArrr = { "aaa", "bbb", "ccc" };
tell(strArrr);
/**
* 传入int
*/
Integer[] integerArrr = { 1, 2, 3 };
tell(integerArrr);
}
public static <T> void tell(T arrr[]) {
for (int i = 0; i < arrr.length; i++) {
System.out.println(arrr[i]);
}
}
}//class
源码下载:
http://download.csdn.net/detail/zhaihaohao1/8741715
视频下载:(19、Java面向对象之泛型视频)
http://download.csdn.net/detail/zhaihaohao1/8741759