title: Lambda can only be used with functional interface?
body: <p>I did this:</p>
  
  <pre><code>public class LambdaConflict
  {
      public static void main(String args[]){
          //*
          System.out.println(LambdaConflict.get(
              (str) -&gt; "Hello World!! By ME?"
          ));
          /*/
          System.out.println(LambdaConflict.get(new Intf&lt;String&gt; (){
              @Override public String get1(String str){
                  return "Hello World!! By get1 " + str;
              }
          }));
          /*****/
      }
  
      public static String get(Intf&lt;String&gt; i, boolean b){
          return i.get1("from 1");
      }
  }
  
  interface Intf&lt;T&gt;
  {
      public T get1(T arg1);
  
      public T get2(T arg1);
  }
  </code></pre>
  
  <p>and get this exception:</p>
  
  <blockquote>
    <p>incompatible types: Intf is not a functional interface
            multiple non-overriding abstract methods found in interface Intf
        Note: Some messages have been simplified; recompile with -Xdiags:verbose to get
        full output
        1 error</p>
  </blockquote>
  
  <p>Is there any condition that I can't use lambda to replace anonymous class?</p>