栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java--泛型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java--泛型

java中泛型的使用: 1.泛型的概念:
	指定一个数据容器(通常指集合类)所存储的数据类型。
2.泛型的类型:
集合的泛型:指定/获取某个确定的未知类型。
3.泛型的传递方式:
	1.类型指定。在类型后面指定。例如
//创建一个学生类
package com.situ.chapter1;

public class Student {
		private int id;
		private String name;
		private String sex;
		public String classname;
		
		
		public int getId() {
			return id;
		}
		public void setId(int id) {
			this.id = id;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getSex() {
			return sex;
		}
		public void setSex(String sex) {
			this.sex = sex;
		}
		public String getClassname() {
			return classname;
		}
		public void setClassname(String classname) {
			this.classname = classname;
		}
		@Override
		public String toString() {
			return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", classname=" + classname + "]";
		}
		
		
}

//创建main方法
package com.situ.chapter1;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class Test1 {


	public static void main(String[] args) {
		Student st = new Student();//声明一个学生
		// TODO 自动生成的方法存根
		ArrayList  list1 = new ArrayList();
		ArrayList  list = new ArrayList<>();//自动根据前面参数推断
		Set set = new HashSet<>();//set的泛型声明
		Map map= new HashMap<>();//map的泛型声明
		
		st.setId(1);//设置学生这个对象的值
		st.setName("文");
		st.setSex("男");
		st.setClassname("18软01");
		list1.add(st);
		
		for(Student i:list1) {
			System.out.println(i);
		}
	}

}

	2.通过方法来传递:在方法返回值的前面指定泛型。
package com.situ.chapter1;


public class Fruit {

}

package com.situ.chapter1;


public class Orange extends Fruit {//继承水果类

}

package com.situ.chapter1;

public class Apple extends Fruit {//继承水果类

}

package com.situ.chapter1;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Test {

    public static void main(String[] args) {
        // 声明?所代表类型的上限
        
        List list3 = T.makeList(3);
        List list4 = new ArrayList();
        list4 = new ArrayList();
        list4 = new ArrayList();

        Object object = list4.get(0);

        // List list3 = new ArrayList<>();

    }
}

 
package com.situ.chapter1;

public class MyArrayList {
    private Object[] objects = new Object[10];
    private int idx = 0;

    public void add(T object) {
        objects[idx] = object;
    }

}

package com.situ.chapter1;

import java.util.ArrayList;
import java.util.List;

public class T {
    
    public static  List makeArray() {
        List e = new ArrayList<>();
        return e;
    }

    public static List makeList(int n) {
        if (n % 2 == 0) {
            List apples = new ArrayList();
            return apples;
        } else {
            List apples = new ArrayList();
            return apples;
        }
    }
}

3.特别的泛型使用方式
	泛型中的? : 通配符,表示一种未知但明确的类型。
		ArrayList  list3 = new ArrayList<>();//可以使用?号,表示存在,但是类型不明确
	 泛型中的extends 和 super关键字: 

? extends T ,也可以明确?的类型

ArrayList  list2 = new ArrayList<>();//继承Student 但是不知道的类型

? super T ,也可以明确?的类型

List list4 = new ArrayList();

? extends T 只能取数据,不能存数据

//list2如果存数据找不到?的明确类型,找不到这个水果到底是啥,无法存数据
//倒是可以取出数据,取出的必然是水果
List list2 = new ArrayList();
        list2 = new ArrayList();
        Fruit f = list2.get(0);

? super T 只能存数据,只能存T类型

//放水果只能放水果的共性,无法放入特性
//找水果就会出现错误,水果类型不明确
 List list4 = new ArrayList();
        list4 = new ArrayList();
        list4 = new ArrayList();

        Object object = list4.get(0);


转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号