ich dies tat:Lambda kann nur mit funktionaler Schnittstelle verwendet werden?
public class LambdaConflict
{
public static void main(String args[]){
//*
System.out.println(LambdaConflict.get(
(str) -> "Hello World!! By ME?"
));
/*/
System.out.println(LambdaConflict.get(new Intf<String>(){
@Override public String get1(String str){
return "Hello World!! By get1 " + str;
}
}));
/*****/
}
public static String get(Intf<String> i, boolean b){
return i.get1("from 1");
}
}
interface Intf<T>
{
public T get1(T arg1);
public T get2(T arg1);
}
und diese Ausnahme erhalten:
inkompatible Typen: Intf ist keine funktionale Schnittstelle mehrere nicht-überwiegende abstrakte Methoden Intf Hinweis in der Schnittstelle gefunden: Einige Nachrichten haben wurde vereinfacht; neu kompiliert mit -Xdiags: ausführlicher volle Leistung 1 Fehler
Gibt es eine Bedingung zu erhalten, die ich nicht Lambda verwenden kann anonyme Klasse zu ersetzen?
Was meinst du mit _overcome_ it? Verstehst du den Fehler? –
1) Funktionsschnittstellen müssen nur 1 Methode haben. 2) sie müssen mit Anmerkungen versehen werden @FunctionalInterface –
Funktionale Schnittstellen werden auch SAM-Typen (Single Abstract Method Types) genannt. Sie können also nur eine einzige abstrakte Methode in Ihrer funktionalen Schnittstelle haben. –