Wpis z mikrobloga

@koziolek666: Testujesz te kody które wrzucasz? Bo albo nie wiem czegoś o javie albo to jest kompletny bullshit: http://koziolekweb.pl/2016/06/16/lenistwo-ponad-wszystko/

Integer of = Lazy.val(() -> new Random().nextInt(), Integer.class);
Spodobał mi się pomysł takie lazy, ale od razu jak zobaczyłem kod nasuwa się proste pytanie... jakim cudem to ma zadziałać?
To nie ma prawa zadziałać, ot-tak z dupy finalna klasa nie stanie się leniwy. No chyba że o czymś nie wiem... Nawet ze zwykłymi klasami może być ciężko, chyba że w javaslang wykraczają po za API javy. Nie chce mi się przetestować co da radę a czego nie, ani analizować kodu, więc wołam...
  • 6
zresztą, zaglądając do javadocs jest info o interface, a w kodzie:
if (!type.isInterface()) {
throw new IllegalArgumentException("type has to be an interface");
}

Nie ma co, blog programistyczny 10/10, może jednak poucz się tej javy :D
@GotoFinal: wszystkim działa, a tobie nie... Trochę ogarnij javę, to pogadamy.

Tak, to zadziała:

Lazy.val tworzy pod spodem Proxy, które jako invocatnionHandler ma wywołanie Lazy.of z przekazanym Suppierem:

public static T val(Supplier extends T supplier, Class type) {
Objects.requireNonNull(supplier, "supplier is null");
Objects.requireNonNull(type, "type is null");
if (!type.isInterface()) {
throw new IllegalArgumentException("type has to be an interface");
}
final Lazy lazy = Lazy.of(supplier);
final InvocationHandler handler = (proxy, method,
if (!type.isInterface()) {


@koziolek666: nie wiedziałem że Integer to interfejs... Wiem jak działa proxy, i działa ono dla interfejsów, już nawet o tym wyżej wspominałem....
Więc to nie ma prawa zadziałać. Może jednak zainteresuje cię javastart.pl? poczytasz co to interfejsy, co to klasy itd...
@koziolek666: Dziękuje łaskawy człowieku.
Nie wiem jaki sens ma tworzenie lazy value czegoś co działa jak IntSupplier, bo to tak trochę Lazy>, ale ok, mogłeś dać jakiś odrobinę sensowniejszy przykład, np losowanie stringa - jako CharSequence oczywiście.
CharSequence lazy = Lazy.val(() -> org.apache.commons.lang3.RandomStringUtils.random(200), CharSequence.class);

Czy też jakiś przykład z Map, List, Set.