1.lambda表达式
lambda表达式本质上是一段匿名内部类,也可以是一段可以传递的代码
例子1:
package classes;
import java.util.TreeSet;
public class JAVA8 {
public static void main(String[] args) {
//省去了函数实现体的编写麻烦而已
TestOperator add=(x,y)->x+y;
JAVA8 jAVA8= new JAVA8();
jAVA8.test(1,2,add);
}
public void test(int x,int y,TestOperator testOperator)
{
System.out.print(testOperator.operator(x,y));
}
interface TestOperator{ //无接口不欢啊,哈哈
int operator(int x,int y);
}
}
例子二:
public TreeSet(Comparator<? super E> comparator) { ????这个是什么鬼,限定可比较的元素范围!!!吧 E或者 E的父类??
this(new TreeMap<>(comparator));
}
报错:
TreeSet<Number> treeSet= new TreeSet<Number>(
new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return 0;
}}
);
不报错:
TreeSet<Integer> treeSet= new TreeSet<Integer>(
new Comparator<Number>(){
@Override
public int compare(Number o1, Number o2) { //说明限制传入的可以是父类,可以看出,super常用于限制方法参数传入,可以是当前或者父,而extends常用于获取,获取到的元素可以是当前元素或者子类,都是限制了范围!!!
// TODO Auto-generated method stub
return 0;
}}
);
//定义Comparator,取其本质
Comparator<Integer> c=(x,y)->Integer.compare(x, y);
TreeSet<Integer> treeSet2= new TreeSet<Integer>(
c
);