例子1.
LambdaTest.java
package LambdaTest;
import java.util.Arrays;
import java.util.List;
interface person<T> {
public abstract int eat(T aString, String bString);
}
public class LambdaTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] atp = { "Rafael Nadal", "Novak Djokovic", "Stanislas Wawrinka", "David Ferrer", "Roger Federer",
"Andy Murray", "Tomas Berdych", "Juan Martin Del Potro" };
List<String> players = Arrays.asList(atp);
// 以前的循环方式
for (String player : players) {
System.out.print(player + "; ");
}
// 使用 lambda 表达式以及函数操作(functional operation)
players.forEach((player) -> System.out.print(player + "; "));
// 在 Java 8 中使用双冒号操作符(double colon operator)
players.forEach(System.out::println);
int atmp;
int btmp;
//String aString;
//String bString;
person<String> tmPerson = (String aString, String bString) -> 1;
System.out.println(tmPerson.eat("11", "11"));
new LambdaTest().testLambda((String aString, String bString) -> 1);
// 这里不用带 <参数> 类型就是因为,还是定义的时候,把 <参数> 或者 <范型> 规定好了!
new LambdaTest().testLambda(( aString, bString) -> Integer.valueOf(bString) + 1);
}
public void testLambda(person<String> person) {
System.out.println("tetsLambda");
}
}
例子2
LambdaTest2.java
package LambdaTest;
import java.util.Arrays;
import java.util.List;
interface person2<T> {
public abstract void eat(T aString);
}
interface person3 {
public abstract void eat(String aString, String bString);
}
public class LambdaTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] atp = { "Rafael Nadal", "Novak Djokovic", "Stanislas Wawrinka", "David Ferrer", "Roger Federer",
"Andy Murray", "Tomas Berdych", "Juan Martin Del Potro" };
List<String> players = Arrays.asList(atp);
// 以前的循环方式
for (String player : players) {
System.out.print(player + "; ");
}
// 使用 lambda 表达式以及函数操作(functional operation)
players.forEach((player) -> System.out.print(player + "; "));
// 在 Java 8 中使用双冒号操作符(double colon operator)
players.forEach(System.out::println);
int atmp;
int btmp;
//String aString;
//String bString;
// 返回值是 void !
person2<String> tmPerson = (String aString) -> System.out.println("ss");
person2<String> tmPerson2 = (aString) -> System.out.println("ss");
new LambdaTest2().testLambda((String a) -> System.out.println( a +"ss"));
new LambdaTest2().testLambda(a -> System.out.println(a + "ss"));
/** 这里的 String 是对象 !!!千万不要理解错!,把鼠标放上去就知道了!颜色都不一样!
* 而且 <对象> 首字母是 <小写>, 我这样写法是不规范的,还容易引起误导! */
new LambdaTest2().testLambda(String -> System.out.println("ss"));
new LambdaTest2().testLambda2((String a, String b) -> System.out.println(a + "ss"));
new LambdaTest2().testLambda2((a, b) -> System.out.println(a + "ss"));
/** 这里的 String 是对象 !!!千万不要理解错!,把鼠标放上去就知道了!颜色都不一样!
* 而且 <对象> 首字母是 <小写>, 我这样写法是不规范的,还容易引起误导! */
new LambdaTest2().testLambda2((String, String2) -> System.out.println("ss"));
}
public void testLambda(person2<String> person) {
System.out.println("tetsLambda222 person2");
}
public void testLambda2(person3 person) {
System.out.println("tetsLambda333 person3");
}
}
例子3
LambdaTest3.java
package LambdaTest;
import java.util.Arrays;
import java.util.List;
public class LambdaTest3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] atp = { "Rafael Nadal", "Novak Djokovic", "Stanislas Wawrinka", "David Ferrer", "Roger Federer",
"Andy Murray", "Tomas Berdych", "Juan Martin Del Potro" };
List<String> players = Arrays.asList(atp);
// 以前的循环方式
for (String player : players) {
System.out.print(player + "; ");
}
// 使用 lambda 表达式以及函数操作(functional operation)
players.forEach((String player) -> System.out.print(player + "; "));
// 在 Java 8 中使用双冒号操作符(double colon operator)
players.forEach(System.out::println);
}
}