java泛型
1.什么是泛型
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
泛型:泛型类 泛型接口 泛型方法
作用:提高程序健壮性,简化代码
泛型的默认值是Object
jdk 要1.5以上
2.泛型定义
/**
*泛型类
*首先定义一个person的实体类 Person<A,B,C>其中A代表的就是一个泛型,调用时可以自定义数据类型
*/
package com.temp;
public class Person<A,B,C> {
private A pname;
private B page;
private C psex;
public A getPname() {
return pname;
}
public void setPname(A pname) {
this.pname = pname;
}
public B getPage() {
return page;
}
public void setPage(B page) {
this.page = page;
}
public C getPsex() {
return psex;
}
public void setPsex(C psex) {
this.psex = psex;
}
}
/**
*调用泛型类
*/
//泛型的属性 属性的数据类型 由调用方来决定当前属性数据类型
//integer 是int数据类型的封装类
//Character 是char的类型的封装类
//必定只能是类而不是基础数据类型的关键字
Person<String, Integer, Character> p=new Person<>();
p.setPname("mz");
p.setPage(10);
p.setPsex('男');
//integer 是int数据类型的封装类
//Character 是char的类型的封装类
//必定只能是类而不是基础数据类型的关键字
Person<String, Integer, Character> p=new Person<>();
p.setPname("mz");
p.setPage(10);
p.setPsex('男');
/**
*定义泛型方法
*/
package com.temp;
public class PresonMethod<M> {
public M getValue(M elenment) {
if(elenment!=null) {
return elenment;
}
return elenment;
}
}
/**
*调用泛型方法
*/
PresonMethod<Integer> pm=new PresonMethod<>();
pm.getValue(20);
/**
*定义泛型接口
*/
package com.temp;
import java.util.List;
/**
* 泛型的结果实现可以在实现类中定义好 也可以在调用的地方定义
* 接口实现接口 实现类实现类
* 基础接口 自定义接口来扩展实现类的方法
* @author dell
*
* @param <M>
*/
public interface IBaseFace<M> {
/**
* 增加的公共方法
* @param element
* @return
*/
public int addObject(M element);
/**
* 编辑
* @param element
* @return
*/
public int editObject(M element);
/**
* 删除
* @param element
* @return
*/
public int removeObject(M element);
/**
* 查询单个对象的方法
* @param element
* @return
*/
public M queryObject(M element);
/**
* 查询多个对象的方法
* @param element
* @return
*/
public List<M> queryObjects(M element);
/**
* 查询并且分页
* @param element
* @return
*/
public List<M> queryObjectPage(M element);
}
* 泛型的结果实现可以在实现类中定义好 也可以在调用的地方定义
* 接口实现接口 实现类实现类
* 基础接口 自定义接口来扩展实现类的方法
* @author dell
*
* @param <M>
*/
public interface IBaseFace<M> {
/**
* 增加的公共方法
* @param element
* @return
*/
public int addObject(M element);
/**
* 编辑
* @param element
* @return
*/
public int editObject(M element);
/**
* 删除
* @param element
* @return
*/
public int removeObject(M element);
/**
* 查询单个对象的方法
* @param element
* @return
*/
public M queryObject(M element);
/**
* 查询多个对象的方法
* @param element
* @return
*/
public List<M> queryObjects(M element);
/**
* 查询并且分页
* @param element
* @return
*/
public List<M> queryObjectPage(M element);
}
/**
*定义基础接口
*/
package com.temp;
/**
* 可以在当前类的接口确定它的数据类型
* @author dell
*
*/
/**
* 可以在当前类的接口确定它的数据类型
* @author dell
*
*/
public interface IpersonFace extends IBaseFace<Person<String , Integer, Character>>{
public boolean queryUserName(String uanem);
}
}
/**
*调用泛型接口
*/
package com.temp;
import java.util.List;
public class Personimpl implements IpersonFace{
@Override
public int addObject(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return 0;
}
public int addObject(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int editObject(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return 0;
}
public int editObject(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int removeObject(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return 0;
}
public int removeObject(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Person<String, Integer, Character> queryObject(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return null;
}
public Person<String, Integer, Character> queryObject(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Person<String, Integer, Character>> queryObjects(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return null;
}
public List<Person<String, Integer, Character>> queryObjects(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Person<String, Integer, Character>> queryObjectPage(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return null;
}
public List<Person<String, Integer, Character>> queryObjectPage(Person<String, Integer, Character> element) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean queryUserName(String uanem) {
// TODO Auto-generated method stub
return false;
}
public boolean queryUserName(String uanem) {
// TODO Auto-generated method stub
return false;
}
}