Why Do We Need Functional Interfaces In Java