zoukankan      html  css  js  c++  java
  • Java泛型

    格式:
    访问权限 class 类名称<泛型,泛型......>{
        属性
        方法
    }
    对象的创建:
    类名称<具体类型> 对象名称 = new 类名称<具体类型>();

    示例:

    package com.jike.fanxing;
    class Point<T>{
    	private T x;
    	private T 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 test02 {
    
    	public static void main(String[] args) {
    		Point<Integer> p=new Point<Integer>();
    		p.setX(100);
    		p.setY(50);
    		System.out.println("经度:"+p.getX()+"	纬度:"+p.getY());
    	}
    
    }
    

     输出:

    经度:100	纬度:50
    

    构造方法中使用泛型:

    package com.jike.fanxing;
    class Fanxing<T>{
    	private T value;
    	public Fanxing(T value) {    //构造方法
    		this.value=value;
    	}
    	public void setValue(T value) {
    		this.value = value;
    	}
    	public T getValue() {
    		return value;
    	}
    
    }
    public class test01 {
    
    	public static void main(String[] args) {
    		Fanxing<String> f=new Fanxing<String>("构造方法中使用泛型");
    		System.out.println(f.getValue());
    	}
    
    }
    

     输出:

    构造方法中使用泛型
    

    通配符:用?代表所有类型。

    package com.jike.fanxing;
    class info<T>{
    	private T key;
    	public void setKey(T key) {
    		this.key = key;
    	}
    	public T getKey() {
    		return key;
    	}
    	@Override
    	public String toString() {	//重写了toString方法
    		return this.getKey().toString();
    	}
    }
    public class test03 {
    
    	public static void main(String[] args) {
    		info<String> i=new info<String>();
    		i.setKey("极客学院");
    		tell(i);
    	}
    	public static void tell(info<?> i) {
    		System.out.println(i);	//因为toString方法已经重写了,所以输出i就会调用toString方法
    	}
    }
    

     输出:

    极客学院
    

    泛型在接口中的使用:

    package com.jike.fanxing;
    interface GetInter<T>{
    	public void say();
    }
    class Gin implements GetInter<String>{
    	private String info;
    	public Gin(String info){
    		this.info=info;
    	}
    	public String getInfo() {
    		return info;
    	}
    	public void setInfo(String info) {
    		this.info = info;
    	}
    	@Override
    	public void say() {
    		// TODO Auto-generated method stub
    		
    	}
    	
    }
    public class test04 {
    
    	public static void main(String[] args) {
    		Gin g =new Gin("jikexueyuan");
    		System.out.println(g.getInfo());
    		
    	}
    
    }
    

     输出:

    jikexueyuan
    

     或者:定义子类时不指明泛型的具体类型,而是在实例化时知名类型。

    package com.jike.fanxing;
    interface GetInter<T>{
    	public void say();
    }
    class Gin<T> implements GetInter<T>{
    	private String info;
    	public Gin(String info){
    		this.info=info;
    	}
    	public String getInfo() {
    		return info;
    	}
    	public void setInfo(String info) {
    		this.info = info;
    	}
    	@Override
    	public void say() {
    		// TODO Auto-generated method stub
    		
    	}
    	
    }
    public class test04 {
    
    	public static void main(String[] args) {
    		Gin<String> g =new Gin<String>("jikexueyuan");
    		System.out.println(g.getInfo());
    		
    	}
    
    }
    

    泛型方法:可以定义泛型参数。

    package com.jike.classDemo;
    class Gener{
    	public<T>T tell(T t){
    		return t;
    	} 
    }
    public class test04 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Gener g=new Gener();
    		String str=g.tell("jikexueyuan");
    		System.out.println(str);
    		int i=g.tell(100);
    		System.out.println(i);
    	}
    }
    

     输出:

    jikexueyuan
    100
    

    泛型数组:泛型方法的参数时数组

    package com.jike.classDemo;
    
    public class test05 {
    
    	public static void main(String[] args) {
    		Integer arr[]= {1,2,3};
    		tell(arr);
    
    	}
    	public static <T>void tell(T arr[]){
    		for (int i = 0; i < arr.length; i++) {
    			System.out.println(arr[i]);
    		}
    	}
    }
    

     输出:

    1
    2
    3
    
  • 相关阅读:
    freenas的踩坑记录:群晖CIFS挂载freeNas的smb共享目录
    【ikuai】爱快软路由上手
    Nacos集成Spring Cloud Gateway使用第三章:nacos配置中心
    Nacos集成Spring Cloud Gateway使用第二章:上手demo
    Nacos集成Spring Cloud Gateway使用第一章:理解解释
    函数指针数组
    回调函数
    使用C语言实现strcpy函数和字符串大小写交换
    Qt : Setting应用程序的数据保存和读取
    Qt 文件操作以及字体颜色选择
  • 原文地址:https://www.cnblogs.com/zhhy236400/p/10447326.html
Copyright © 2011-2022 走看看