Böyle uygulamak gerekir:
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;
}
}
makeBar
yöntem statik olmalıdır this
tekabül nesne yöntemi aradığınız noktada kullanılabilir durumda olmadığından. Bu arada
, bu yaklaşım
Foo(Bar)
için tam olarak başlatılmış Bar
nesne geçmek yapar avantajına sahiptir. (@RonU onun yaklaşımı değil belirtiyor. Tabii ki bu onun
Foo(Bar)
yapıcı onun
Foo
argüman son durumunda. Bu problemlidir edilebilir olduğunu kabul anlamına gelir.)
Son olarak, statik bir fabrika yöntemi olduğunu kabul Bu yaklaşıma iyi bir alternatif. diyor gibi
public class Foo {
public static Foo createFooWithDefaultBar() {
Bar b = new Bar();
b.setSomeData();
b.doSomethingElse();
return new Foo(b);
}
public Foo(Bar b) {
// ...
}
}
Bu gerçekten ikinci kurucudaki postayı yanıtlıyor mu? – RonU
* postayı yanıtla * ??? –
@RonU - IMO, cevabım OP'nin sorusunu doğrudan ele alıyor. Eğer katılmıyorsanız, lütfen nedenini açıklayın. –