Diziler için alıcılar ve ayarlayıcılar hakkında birkaç sorum var. Biz onun kurucu bir dizinin özel kopyasını yapar böyle bir sınıf, olduğunu varsayalım: Biz diziyi istiyoruzDiziler için alıcılar ve ayarlayıcılar
import java.util.Arrays;
public class Foo
{
private int[] array;
public Foo(int[] array) {
this.array = Arrays.copyOf(array, array.length);
}
}
sadece erişilebilir/Alıcı ve ayarlayıcıların yoluyla mutasyona uğramış. Biz kullanıcı doğrudan dizinin elemanlarını değiştirmek için izin veren bir başvuru dönüyoruz gibi gaz giderici amacı yendi
public int[] getArray() {
return array;
}
: Biz şuna benzer bir alıcı varsa. Örneğin. belirleyiciler için Benzer
public int getElement(int index) {
return array[index];
}
:
Foo foo = new Foo(someArray);
...
int[] bar = foo.getArray();
bar[0] = 123; // Now foo.array[0] = 123 and we haven't used a setter!
Yani muhtemelen böyle bir şey gerekiyor. ,
public int getArrayLength() {
return array.length;
}
Bu zaten 1-boyutlu bir dizi için biraz dağınık: Biz başına elemanı bazında şeyler yapıyoruz Ama eğer, biz de boyunu almanın bir araç sağlamak için ihtiyacımız olacak Bu tür önemsiz bir görev için bir sürü kod olduğunu ve daha da önemlisi aslında kullanmak için bir karmaşa
import java.util.Arrays;
public class Foo
{
private int[][][] array;
public Foo(int[][][] array) {
// Code for making a deep copy here
}
public int getElement(int i, int j, int k) {
return array[i][j][k];
}
public void setElement(int i, int j, int k, int value) {
array[i][j][k] = value;
}
public int getArrayLength() {
return array.length;
}
public int getArrayLength(int i) {
return array[i].length;
}
public int getArrayLength(int i, int j) {
return array[i][j].length;
}
}
: ama bunun yerine çok boyutlu bir dizi olduğunu varsayalım. Gerçekten böyle bir şeyle sonuçlanmak zorunda mıyız yoksa daha iyi bir yolu var mı? Her yere baktım ve bunun için bir "standart pratik" görünmüyor.
Listelere baktınız mı? – Jacob
Diziler çok 1900'dür. – Marcelo