I have a Java class MyClass with this constructor:
public MyClass(Consumer<?> someMethod)
And I would like to do that:
final MyClass myObject = new MyClass(obj -> {
doSomethingOutsideTheContextOfMyObject();
myObject.doSmomething(obj);
});
But I get an compiler error that variable myObject might not be initialized.
According to my research I cannot switch of the compiler showing the error and I cannot fake-initialize the variable as it has to be final. What shall I do?
I think that the lambda you are passing to your Constructor should not be a Consumer ; it should be a BiConsumer...
Something like that :
import java.util.function.BiConsumer;
public class MyClass<T> {
private BiConsumer<MyClass<T>, T> lambda;
public MyClass(BiConsumer<MyClass<T>, T> lambda) {
this.lambda = lambda;
}
private static void doSomethingOutside() {
// TODO Auto-generated method stub
}
private void doSomething(T obj) {
// TODO Auto-generated method stub
}
public void go(T o) {
lambda.accept(this, o);
}
public static void main(String[] args) {
MyClass<String> myObj = new MyClass<>((me, obj) -> {
doSomethingOutside();
me.doSomething(obj);
});
myObj.go("Hello World!");
}
}
HTH! :)