[英]More efficient ways to initialize objects in java?
我在這里有10個對象,但我又要再增加20個對象,有沒有更短的方法呢?
Gallina[] gallina=new Gallina[10];
gato[0]=new Gato(true, "Siames", "Fluffy", 10);
gato[1]=new Gato(false, "Persa", "Fluffy", 11);
gato[2]=new Gato(true, "Maine Coon", "Fluffy", 9);
gato[3]=new Gato(false, "Ragdoll", "Fluffy", 4);
gato[4]=new Gato(false, "Bengala", "Fluffy", 1);
gato[5]=new Gato(true, "Sphynx", "Fluffy", 6);
gato[6]=new Gato(true, "Abisinio", "Fluffy", 3);
gato[7]=new Gato(false, "Azulruso", "Fluffy", 9);
gato[8]=new Gato(true, "Siberiano", "Fluffy", 2);
gato[9]=new Gato(true, "Siames", "Fluffy", 4);
您可以避免所有分配,但是恐怕它不會太短:
Gato[] gato = new Gato[] {
new Gato(true, "Siames", "Fluffy", 10),
new Gato(false, "Persa", "Fluffy", 11),
...
};
與您的技術相比,這有兩個小優點:
顯然,這假設在初始化期間已完全填充了數組。
class Gallina {
private int gatoIndex = 0;
private Gato[] gatos;
public Gallina(int gatosLength) {
gatos = new Gato[gatosLength];
}
public void addGato(boolean state, String name, String type, int value) {
if (gatoIndex > gatos.length) {
// an exception probably or resize array
}
gatos[gatoIndex] = new Gato(state, name, type, value);
gatoIndex += 1;
}
}
class Test {
public static void main(String[] args) {
Gallina gallina = new Gallina(10);
gallina.addGato(true, "ABC", "Fluffy", 10);
}
}
使用List<Gato>
而不是Gato[]
將幫助您擺脫gatoIndex
並gatoIndex
調整數組的大小。
基本上,使用上面的方法,您不必每次都編寫相同的new Gato()
樣板。
考慮使用靜態工廠方法而不是構造函數。
它為您提供了一些優勢:
實作
class Gato {
private boolean field1;
private String field2;
private String field3;
private int field4;
private Gato (boolean field1, String field2, String field3, int field4) {
this.field1 = field1;
this.field2 = field2;
this.field3 = field3;
this.field4 = field4;
}
public static Gato newInstance (boolean field1, String field2, String field3, int field4) {
return new Gato(field1, field2, field3, field4);
}
因此,在您的方法中,您將使用該實現
gato[0] = Gato.newInstance(true, "Siames", "Fluffy", 10);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.