一、泛型方法
/** 自定义泛型:自定义泛型可以理解为是一个数据类型的占位符,或者理解为是一个数据类型的变量。 泛型方法:
泛型方法的自定义格式:修饰符<声明自定义泛型>返回值类型 函数名称(形参列表)
在自定义泛型方法上泛型的具体类型是调用该方法的时候传入参数的类型所确定的 */
public class demo1 {
public <T>T printf (T t){
return t;
}
public static void main(String[] args) {
demo1 demo1 = new demo1();
Integer integer = demo1.printf(100);
String string = demo1.printf("wz");
System.out.println(string);
System.out.println(integer);
}
}
二、泛型类
package cn.itcast.generic;
/**
* 在类上自定义泛型 如果创建该类的对象时, 没有指定泛型的具体类型 那么默认的是object类型
* 在类上自定义的泛型 具体的数据类型是在创建对象的时候指定的
*
*/
public class demo2 {
public static void main(String[] args) {
MyList<String > myList = new MyList();
myList.add("add");
// myList.add(123);
}
} class MyList<T>{
//创建对象的时候不能直接用泛型直接创建
//T[] arr = new T[10];
Object[] arr = new Object[10];
int index = 0;
public MyList() { }
public void add(T oT){
arr[index++] = oT; }
}
三、泛型接口
/** 泛型接口: 泛型接口的定义格式:interface 接口名 <声明自定义的泛型>{}
在接口上自定义泛型注意事项:
1 在接口上自定义泛型 具体的数据类型是 在实现接口的时候 指定的。
2 如果接口自定义了泛型 在实现该接口的时候没有指定数据类型 那么该接口默认 是object类型 如果
*/ interface GenericDao<T>{
public void add(T t); public void remove(T t);
} public class demo3 implements GenericDao<String >{ @Override
public void add(String t) {
// TODO Auto-generated method stub } @Override
public void remove(String t) {
// TODO Auto-generated method stub }
}
class demo4 implements GenericDao{ @Override
public void add(Object t) {
// TODO Auto-generated method stub
} @Override
public void remove(Object t) {
// TODO Auto-generated method stub
}
}
三、泛型接口
/** 泛型接口: 泛型接口的定义格式:interface 接口名 <声明自定义的泛型>{}
在接口上自定义泛型注意事项:
1 在接口上自定义泛型 具体的数据类型是 在实现接口的时候 指定的。
2 如果接口自定义了泛型 在实现该接口的时候没有指定数据类型 那么该接口默认 是object类型 如果
*/ interface GenericDao<T>{
public void add(T t); public void remove(T t);
} public class demo3 implements GenericDao<String >{ @Override
public void add(String t) {
// TODO Auto-generated method stub } @Override
public void remove(String t) {
// TODO Auto-generated method stub }
}
class demo4 implements GenericDao{ @Override
public void add(Object t) {
// TODO Auto-generated method stub
} @Override
public void remove(Object t) {
// TODO Auto-generated method stub
}
}