Java8 Study Guide
Java8 Study Guide
Functional Interfaces
Interface which contains Only Single Abstract Method (SAM) is called Functional Interface.
You can mark the Functional Interface optionally with @FunctionalInterface
Functional Interface can have the following
o One Abstract Method
o Multiple default methods
o Multiple static methods
o Multiple private methods ( from Java9 )
o Multiple private static methods ( from Java9 )
1)Hello.java
package com.jlcindia.java8.demos;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
@FunctionalInterface
public interface Hello {
2)Demo1.java
package com.jlcindia.java8.demos;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo1 {
public static void main(String[] args) {
try {
int result = a/b;
System.out.println("Result is "+ result);
}catch(Exception ex) {
ex.printStackTrace();
}
hello.test(50, 0);
}
}
1)Hello.java
package com.jlcindia.java8.demos;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
@FunctionalInterface
public interface Hello {
void test(int a,int b) throws ArithmeticException;
}
2)Demo2.java
package com.jlcindia.java8.demos;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo2 {
public static void main(String[] args) {
System.out.println("main Begin");
//hello.test(50, 0);
try{
hello.test(50, 0);
}catch(Exception ex) {
ex.printStackTrace();
}
System.out.println("main End");
}
}
Demo3.java
package com.jlcindia.java8.demos;
import java.util.function.Predicate;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo3 {
public static void main(String[] args) {
mybool = predicate1.test(28);
System.out.println(mybool);
Demo4.java
package com.jlcindia.java8.demos;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo4 {
public static void main(String[] args) {
System.out.println(mylist1);
mylist1.removeIf(predicate1);
System.out.println(mylist1);
System.out.println("-------------------------");
List<Integer> mylist2 = new ArrayList<>();
mylist1.add(20); mylist1.add(21); mylist1.add(22); mylist1.add(23);
mylist1.add(24); mylist1.add(25); mylist1.add(26);
Demo5.java
package com.jlcindia.java8.demos;
import java.util.ArrayList;
import java.util.List;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo5 {
public static void main(String[] args) {
System.out.println(mylist1);
mylist1.removeIf((num) -> num %2 ==0); //IMP
System.out.println(mylist1);
System.out.println("-------------------------");
List<Integer> mylist2 = new ArrayList<>();
mylist1.add(20); mylist1.add(21); mylist1.add(22); mylist1.add(23);
mylist1.add(24); mylist1.add(25); mylist1.add(26);
System.out.println(mylist2);
mylist2.removeIf((num) -> num %2 !=0); //IMP
System.out.println(mylist2);
}
}
Demo6.java
package com.jlcindia.java8.demos;
import java.util.function.Predicate;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo6 {
public static void main(String[] args) {
mybool = predicate2.test(99);
System.out.println(mybool);
mybool = predicate2.test(88);
System.out.println(mybool);
System.out.println("--------------");
mybool = predicate3.test(28);
System.out.println(mybool); //T
mybool = predicate3.negate().test(28);
System.out.println(mybool); //F
mybool = predicate4.test(19);
System.out.println(mybool); //T
mybool = predicate4.negate().test(19);
System.out.println(mybool); //F
}
}
Demo7.java
package com.jlcindia.java8.demos;
import java.util.function.Predicate;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo7 {
public static void main(String[] args) {
mybool = predicate1.and(predicate3).test(19);
System.out.println(mybool);
mybool = predicate2.and(predicate3).test(19);
System.out.println(mybool);
mybool = predicate1.or(predicate3).test(29);
System.out.println(mybool);
mybool = predicate1.or(predicate3).test(28);
System.out.println(mybool);
mybool = predicate1.and(predicate3).test(18);
System.out.println(mybool);
mybool = predicate2.or(predicate3).test(29);
System.out.println(mybool);
mybool = predicate2.or(predicate3).test(28);
System.out.println(mybool);
mybool = predicate2.and(predicate3).test(18);
System.out.println(mybool);
Interview Questions:
Q1) What is a Function Interface?
Ans:
Q10) Can we change the return type or parameters of SAM during implementation?
Ans:
Q11) How can I throws exception at method level using Functional Interface?
Ans:
1)
interface Hello {
}
2)
interface Hello {
void show();
}
3)
interface Hai {
void show();
}
}
4)
interface Hello {
void show();
default void display(){
System.out.println(“OK”);
}
5)
interface Hello {
void m1();
void m2();
}