18---java中泛型03(泛型的其他应用)
来源:互联网 发布:华为工业级网络路由器 编辑:程序博客网 时间:2024/06/05 08:33
1、泛型接口:
interface Info<T>{//在接口上定义泛型
public T getVar();//定义抽象方法,抽象方法的返回值就是泛型类型
}
class InfoImpl implements Info{
public String getVar(){
return null;
}
}
以上的操作,并不是一个子类实现泛型的最好操作,最好在实现的时候也
指定其具体的泛型类型;
泛型接口实现的两种方式:
1:定义子类:在子类的定义上也声明泛型类型
interface Info<T>{//在接口上定义泛型
public T getVar();//定义抽象方法,抽象方法的返回值就是泛型类型
}
class InfoImpl<T> implements Info<T>{
private T var;
public InfoImpl(T var){
this.var=var;
}
public void setVar(T var){
this.var=var;
}
public T getVar(){
return this.var;
}
}
public class Demo{
public static void main(String args[]){
Info<String> i=null;
i=new InfoImpl<String>("lid");
System.out.print("内容:"+i.getVar());
}
}
2、如果现在实现接口的子类不想使用泛型声明,则在实现接口的时候直接指定红啊
其具体的操作类型即可;
interface Info<T>{//在接口上定义泛型
public T getVar();//定义抽象方法,抽象方法的返回值就是泛型类型
}
class InfoImpl implements Info<String>{
private String var;
public InfoImpl(String var){
this.var=var;
}
public void setVar(String var){
this.var=var;
}
public String getVar(){
return this.var;
}
}
public class Demo{
public static void main(String args[]){
Info i=null;
i=new InfoImpl("lid");
System.out.print("内容:"+i.getVar());
}
}
2、泛型方法:
泛型方法所在的类是不是泛型类是没有关系的;
泛型方法:
class Demo01{
public <T> T fun(T t){//可以接受任意数据类型
return t;
}
}
public class Demo{
public static void main(String args[]){
Demo01 d=new Demo01();//实例化一个对象
String str=d.fun("lid");//传递字符串
int i=d.fun(20);//传递整数
System.out.println(str);
System.out.println(i);
}
}
3、通过泛型方法返回泛型类的实例
因为之前的代码中可以发现,只要在方法中定义了泛型操作,则可以传递任意的数据类型;
class Info<T extends Number>{
private T var;
public T getVar(){
return this.var;
}
public void setVar(T var){
this.var=var;
}
public String toString(){
return this.var.toString();
}
}
public class Demo{
public static void main(String args[]){
Info<Integer> i=fun(30);
System.out.println(i);
}
public static <T extends Number> Info<T> fun(T param){
Info<T> temp=new Info<T>();
temp.setVar(param);
return temp;
}
}
4、使用泛型统一传入参数的类型
class Info<T>{
private T var;
public T getVar(){
return this.var;
}
public void setVar(T var){
this.var=var;
}
public String toString(){
return this.var.toString();
}
}
public class Demo{
public static void main(String args[]){
Info<String> i1=new Info<String>();
Info<String> i2=new Info<String>();
i1.setVar("Hello");
i2.setVar("girls");
add(i1,i2);
}
public static <T> void add(Info<T> i1,Info<T> i2){
System.out.println(i1.getVar()+" "+i2.getVar());
}
}
注:add(Info<T> i1,Info<T> i2)泛型必须统一;
5、泛型数组:
public class Demo{
public static void main(String args[]){
Integer i[]=fun1(1,2,3,4,5,6);
fun2(i);
}
public static <T> T[] fun1(T...arg){//接收可变参数
return arg;
}
public static <T> void fun2(T param[]){
System.out.println("接收泛型数组");
for(T t:param){
System.out.print(t+"、");
}
}
}
6、泛型的嵌套设置:
再设置一个泛型的同时指定另一个泛型;
class Info<T,V>{//接收两个泛型类型
private T var;
private V value;
public Info(T var,V value){
this.setVar(var);
this.setValue(value);
}
public void setVar(T var){
this.var=var;
}
public void setValue(V value){
this.value=value;
}
public T getVar(){
return this.var;
}
public V getValue(){
return this.value;
}
}
class Demo01<S>{
private S info;
public Demo01(S info){
this.setInfo(info);
}
public void setInfo(S info){
this.info=info;
}
public S getInfo(){
return this.info;
}
}
public class Demo{
public static void main(String args[]){
Demo01<Info<String,Integer>> d=null;
Info<String,Integer> i=null;
i=new Info<String,Integer>("lid",20);
d=new Demo01<Info<String,Integer>>(i);
System.out.println("内容一:"+d.getInfo().getVar());
System.out.println("内容二:"+d.getInfo().getValue());
}
}
- 18---java中泛型03(泛型的其他应用)
- 泛型的其他应用---------(3)
- 19---java中枚举04(枚举的其他应用)
- 【泛型】_泛型的其他应用笔记
- 【泛型】_泛型的其他应用笔记
- RecyclerView的其他应用
- java打开文件(Windows exe,应用文件exe,以及其他任何格式的文件)
- java打开文件(Windows exe,应用文件exe,以及其他任何格式的文件)
- Java泛型的其他应用——泛型接口、泛型方法、泛型数组以及泛型的嵌套设置
- 读写其他应用的SharedPreferences
- 删除其他应用的快捷方式
- 读写其他应用的SharedPreferences
- 启动其他应用的方式
- 枚举---枚举的其他应用
- numpy的其他应用介绍
- java学习日记_97:其他流及其其他应用
- Java并发:其他(总结性的东西)
- Android中编辑其他应用的SharedPreferences(一)
- TreeSet的使用。
- Java入门级题目及源代码(上)
- OpenGL反走样/抗锯齿实例
- android输入法框架整理
- Ubuntu10.04安装JDK1.6
- 18---java中泛型03(泛型的其他应用)
- SQL Server DBA工作内容详解
- sigaction函数 - 改变信号行为
- Android 中Message,MessageQueue,Looper,Handler详解+实例
- Android中ListView分页加载数据
- asterisk拨号规则
- 一个linux UDP网络通讯的例子源代码(server、client方式)
- android Theme使用总结
- fedora 16安装gnochm阅读器