Java8——Java5新特性+泛型+枚举

Java5新特性:

可变参数属于数组的变形应用;

foreach循环:

目的:数组或者集合数据的输出;格式如下:

for(类型 变量:数组|集合){
    //每一次循环会自动的将数组的内容设置给变量
}
public class test {
	public static void main(String[] args) {
		int data[] = new int[] { 1, 2, 3 };
		for (int x : data) {
			System.out.println(x);
		}
	}
}

用数组直接通过索引访问会比较麻烦,所以foreach避免了索引的麻烦;

静态导入:

例如导入包的时候:import static cn.mldn.util.MyMath.*;  将包静态导入,这些方法就好比在主类中定义的static 方法,在引用的时候就可以直接引用,不必在前面加上类名称,而是直接使用类里面的方法;

泛型:

问题引出:

当程序要求保存很多组不同数据类型的东西时,会考虑使用Object来保存不同类型的数据,Object里面的自动装箱自动拆箱操作提供了便利;这就要求在定义类里面的属性的时候,属性的类型是Object;

泛型技术的核心意义:类在定义的时候,可以使用一个标记,此标记可以表述类中属性或方法参数的类型,在使用的时候动态设置类型;

class Point<T> { // 设置一个标记,在使用的时候才知道它的类型
	private T x;
	private T y;

	public void setX(T x) {
		this.x = x;
	}

	public void setY(T y) {
		this.y = y;
	}

	public T getX() {
		return x;
	}

	public T getY() {
		return y;
	}
}

public class test {
	public static void main(String[] args) {
		Point<String> p = new Point<String>();
		p.setX("哈哈哈");
		String x = p.getX(); // 取出数据时,不需要向下转型
		System.out.println(x);
	}
}

如果想使用泛型,那么他能够采用的类型必须是类,即不能是基本类型,只能是引用类型;

对于泛型有两点说明:

  • 如果在使用泛型类或者接口的时候,没有设置泛型具体类型,那么会出现程序编译时的警告,同时为了不出错,所有泛型将会使用Object表示
  • JDK1.7之后,声明的时候,后面可以不加类型,例如:Point<String> p = new Point<>();

通配符:

 

泛型接口:

interface IMessage<T>{   //设置泛型接口
	public void print(T t);
}

泛型方法:

泛型方法不一定非要定义在支持泛型的类里面;也可以在不是泛型的类里面定义;

pubiic static <T> T fun(T t){    //T 的类型由传入的参数的类型决定
    return t;
}

枚举:

介绍:

使用enum关键字来描述枚举;

enum Color{    //定义好了枚举类
	RED,GREEN,BLUE;    //此处为实例化对象
}

public class test {
	public static void main(String[] args) {
		Color red = Color.RED;
		System.out.println(red);
	}
}

使用枚举可以完全简化的代替多例设计模式;

用enum定义的枚举就相当于是一个类继承了Enum(是一个抽象类)类而已,

面试题:enum和Enum的区别?

  • enum是一个关键字,Enum是一个抽象类;
  • 使用enum定义的枚举就相当于一个类继承了Enum这个抽象类;

定义其他结构:

虽然枚举的定义比较简单,但是有一点要求:

  • 枚举之中定义的构造方法不可用 public 声明;如果没有无参构造,请手工构造,传递参数;
  • 枚举对象必须要放在首行,随后才可以定义属性、构造、普通方法
enum Color { // 定义好了枚举类
	RED("红色"), GREEN("绿色"), BLUE("蓝色");
	private String title;

	private Color(String title) {
		this.title = title;
	}

	public String toString() {
		return this.title;
	}
}

public class test {
	public static void main(String[] args) {
		for (Color c : Color.values()) {
			System.out.println(c);
		}
	}
}

此时与多例设计模式就完全相同,而且代码更加的简洁;

枚举实现接口:

interface Message {
	public String getTitle();
}

enum Color implements Message { // 定义好了枚举类
	RED("红色"), GREEN("绿色"), BLUE("蓝色");
	private String title;

	private Color(String title) {
		this.title = title;
	}

	public String toString() {
		return this.title;
	}

	public String getTitle() {
		return this.title;
	}
}

public class test {
	public static void main(String[] args) {
		Message msg = Color.RED;
		System.out.println(msg.getTitle());

	}
}

枚举应用:

枚举属于高级的多例设计模式;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值