java学习之泛型

     泛型:标识着集合中保存的元素

      <泛型(类型)>

      泛型前后类型要一致

      后面的类型可以省去

 ArrayList<String> list=new ArrayList<>();

 

     另一种泛型

         ? extends E

         问号是子类 E是父类

         只能使用父类的子类或本类

         也叫向下限定

         addAll(Collection<? extends E> c)


       好处:

       1.操作数据更加安全(规范集合中能保存的数据)

       2.可以避免向下转型(强转类型)的麻烦

       3.将运行时的错误转到编译时报错

private static void fun2() {
		//不加泛型 集合中保存三个学生
		ArrayList<Student> list=new ArrayList<>();
			list.add(new Student("哈哈1",11));
			list.add(new Student("哈哈2",12));
			list.add(new Student("哈哈3",13));
			//从集合中取出一个元素
			Object object = list.get(0);
			Student student=(Student)object;
			System.out.println(student.getName());
			//从集合中取出一个元素强转成工人类型
			//调用工人的工作方法
			//不加泛型 获取到集合中的元素
			//元素的类型你可以随便强转 没有约束
			//编译都会通过
			
			//加上泛型 可以在编译时有错误提示
			//让集合中保存的元素更加安全
			Object object2 = list.get(1);
			Worker worker=(Worker)object2;
			worker.work();
	}

     泛型类

       在类的声明上 添加一个泛型

       使用的字母(大小写都行)

       这个泛型可以在类中进行使用

  

       类上声明的泛型

       会在创建对象的时候被赋值真正的类型

public class Worker<Z> {
	
	//成员变量
	private Z z;
	//成员方法set/get方法
	public void setZ(Z z) {
		this.z=z;
	}
	public Z getZ() {
		return z;
	}
	//一个类中可以存在几个泛型
	//如果你在方法中声明了新的泛型
	//该泛型会在方法被调用的时候赋值泛型
	//需要在方法中声明出来泛型
	public <W> void fun(W w) {
		System.out.println(w);
	}
	//静态方法能不能使用泛型Z
	//不能使用类声明上的泛型
	//直接使用类型调用静态方法的时候
	//没有对象的创建 Z泛型还没有被赋值
	//使用泛型可以单独声明一下(static后面)
	private static<Q> void sayHi(Q q) {
		System.out.println(q);
	}

       多参数的参数

         int ... num 这个参数可以看成是一个数组

         可以当做数组来遍历

         使用方式

         1.直接传一个数组

         2.传多个数用逗号分开

         注意:多个参数时 最好把多参数放到最后

public static void fun4(int ... num) {
		for (int i = 0; i < num.length; i++) {
			System.out.println(num[i]);
			
		}
	}

    数组转集合

private static void fun6() {
		//数组转集合
		int[] array= {1,2,3,4,5};
		//根据泛型 这个集合中每一个元素都是一个数组
		List<int[]> list = Arrays.asList(array);
		System.out.println(list);
		//直接传入 int[] 系统不会帮你进行自动装箱
		Integer[] newArray= {1,2,3,4,5};
		//直接把数组中的元素放入了集合中
		List<Integer> newList = Arrays.asList(newArray);
		System.out.println(newList);
	}

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值