Java8——Annotation+Java8新特性

Annotation:

Annotation 是 JDK1.5 最大的特色,利用注释的形式来实现程序的不同功能实现;

在Java SE里面支持自定义的 Annotation 开发,并且提供了3个最常用的基础Annotation:@Override、@Deprecated、@SuppressWarnings;

准确覆写:@Override:

class Book {
	@Override // 用于检查覆写的方法
	public String toString() {
		return "hello";
	}
}

public class test {
	public static void main(String args[]) {
		System.out.println(new Book());
	}
}

如果不加 @Override ,在覆写的时候,方法的名称大小写出错,只有在编译之后才能检查出来,加入了 @Override 之后,在编写的过程中就可以发现;

过期声明:@Deprecated:

class Book {
	@Deprecated // 这个方法已经过期
	public String toString() {
		return null;
	}
}

public class test {
	public static void main(String args[]) {
		Book book = new Book();
		book.toString();
	}
}

@Deprecated 用于声明这个方法已经过期了,开发者不要继续使用,但是在以前的开发程序中已经使用过的,还是可以继续使用该方法;

压制警告:@SuppressWarnings:

开发着在开发的过程中知道会出现哪些问题,为了不出现警告提示信息而存在,是强迫症的福利;

Java8新特性:

接口定义增强:

interface IMessage {
	public abstract void print();

	default void fun() {
		System.out.println("hello");
	}
}

class Message implements IMessage {
	public void print() {
		System.out.println("world");
	}
}

public class test {
	public static void main(String args[]) {
		IMessage msg = new Message();
		msg.fun();
	}
}

接口是由全局常量和抽象方法组成,如果需要在接口里面定义普通函数,需要使用default关键字来定义方法,如上代码输出的是hello;除了使用default关键字,还可以使用static关键字定义,这时可以直接使用类名称进行调用;

JDK1.8 有一个最重要概念,内部类访问参数时,可以不加 final 关键字;

  • 接口总结:
  1. 接口使用default 和 static关键字的作用在于避免子类重复实现同样的代码;
  2. 接口的使用还应该以抽象方法为主;

Lamda表达式:

属于函数式编程的概念;需要联系匿名内部类;

interface IMessage {
	public abstract void print();
}

public class test {
	public static void main(String args[]) {
		fun(() -> System.out.println("hello"));
	}

	public static void fun(IMessage msg) {
		msg.print();
	}
}
  • 对于Lamda语法有3种形式:
  1. (参数)-> 单行语句;
  2. (参数)-> {多行语句};
  3. (参数)-> 表达式

利用Lamda表达式避免了匿名内部类过多无用的定义,简化了代码格式;

方法引用:

方法引用就为一个方法设置别名,相当于一个方法有了不同的名字,有如下 4 种定义:

  • 引用静态方法:类名称::static 方法名称;
  • 引用某个对象的方法:实例化对象::普通方法;
  • 引用特定类型的方法:特定类::普通方法;
  • 引用构造方法:类名称::new;

如果要实现函数的引用,必须要用到接口,但是一个接口里面只能有一个方法,如果存在多个方法将不能引用;

可以加上@FunctionalInterface表示函数式编程,并且一个接口里面只能有一个方法;

你可能感兴趣的:(java8)