How to implement constructor wrapping in Java? -
this i'm trying (in java 1.6):
public class foo { public foo() { bar b = new bar(); b.setsomedata(); b.dosomethingelse(); this(b); } public foo(bar b) { // ... } } compiler says:
call must first statement in constructor is there workaround?
you need implement this:
public class foo { public foo() { this(makebar()); } public foo(bar b) { // ... } private static bar makebar() { bar b = new bar(); b.setsomedata(); b.dosomethingelse(); return b; } } the makebar method should static, since object corresponding this not available @ point calling method.
by way, approach has advantage does pass initialized bar object foo(bar). (@ronu notes approach not. of course means foo(bar) constructor cannot assume foo argument in final state. can problematical.)
finally, agree static factory method alternative approach.
Comments
Post a Comment