Need full support java 8 closure
nicolaichuk opened this issue · 1 comments
nicolaichuk commented
https://github.com/dragome/dragome-sdk
Java 8 ready. Build your pages using lambda expressions, default methods, streams
but
I have this synthetic code:
====================================================
Supplier.java
public interface Supplier<T> {
public T get();
}
ObjectPool.java
public class ObjectPool<T> {
private final Supplier<T> supplier;
private ObjectPool(final Supplier<T> supplier) {
this.supplier = supplier;
}
public T get() {
return supplier.get();
}
public static <T> ObjectPool<T> create(final Supplier<T> supplier) {
return new ObjectPool<>(supplier);
}
}
NodeOverlapCallback.java
public abstract class NodeOverlapCallback {
public abstract void processNode();
}
MyNodeOverlapCallback.java
public class MyNodeOverlapCallback extends NodeOverlapCallback {
@Override
public void processNode() {
// DO SOMETHING
}
}
====================================================
Now if i do like this:
final ObjectPool<MyNodeOverlapCallback> myNodeCallbacks = ObjectPool.create(
new Supplier<MyNodeOverlapCallback>() {
@Override
public MyNodeOverlapCallback get() {
return new MyNodeOverlapCallback();
}
});
final MyNodeOverlapCallback myNodeCallback = myNodeCallbacks.get();
myNodeCallback.processNode();
All work well after dragome js codegen
But if i do like this:
final ObjectPool<MyNodeOverlapCallback> myNodeCallbacks = ObjectPool.create(
() -> new MyNodeOverlapCallback()
);
final MyNodeOverlapCallback myNodeCallback = myNodeCallbacks.get();
myNodeCallback.processNode();
Browser write javascript error that myNodeCallback is null;
But both implimentation work correct as java code.
P.S.: also repost to dragome/dragome-sdk#147
xpenatan commented
I'll close this because its more dragome side.