import java.util.LinkedList; import java.util.List; class MyTest { private Test alist; public Test getAlist() { return alist = create(Test::new, alist); } private T create(CreateCallback callback, T defaultVal) { if (defaultVal == null) { return callback.create(); } return defaultVal; } interface CreateCallback { T create(); } class Test {} }