Ich schrieb den folgenden Code Lazy<T>
in Java zu simulieren:simulieren Faul in Java8
import java.util.function.Supplier;
public class Main {
@FunctionalInterface
interface Lazy<T> extends Supplier<T> {
Supplier<T> init();
public default T get() { return init().get(); }
}
static <U> Supplier<U> lazily(Lazy<U> lazy) { return lazy; }
static <T>Supplier<T> value(T value) { return()->value; }
private static Lazy<Thing> thing = lazily(()->thing=value(new Thing()));
public static void main(String[] args) {
System.out.println("One");
Thing t = thing.get();
System.out.println("Three");
}
static class Thing{ Thing(){System.out.println("Two");}}
}
aber ich erhalte die folgende Warnung:
entspricht„Wert
(T)
in Main kann nicht auf (com.company.Main.Thing
) angewendet werden, Grund: keine Instanz (en) vom Typ Variable (n) T vorhanden ist, so dassSupplier<T>
zuLazy<Thing>
"
Könnten Sie mir bitte helfen herauszufinden, was das Problem ist? danke im voraus!
Folgen Sie [der Vorlage] (https://Stackoverflow.com/a/29141814/2711488) * streng * ... – Holger