Java'daki wrapper sınıfının neden bir referans türü gibi davranmadığını anlamak için çok büyük bir sorunum var. Örnek:Java'daki sarma sınıfı neden bir referans türü gibi davranmıyor?
Integer one = 10;
Integer two = one;
one = 20;
System.out.println(one);
System.out.println(two);
çıkışı olacaktır:
:Ben two
Kendi sınıf oluşturmak, bu örnekte olduğu gibi 20 olacağı düşünülmektedir
class OwnInteger {
private int integer;
public OwnInteger(int integer) {
this.integer = integer;
}
public int getInteger() {
return integer;
}
public void setInteger(int integer) {
this.integer = integer;
}
}
OwnInteger one = new OwnInteger(10);
OwnInteger two = one;
one.setInteger(20);
System.out.println(one.getInteger());
System.out.println(two.getInteger());
Soru, Integer sarmasıdır özel sınıf özel mi? Örneklerimde gösterdiğim gibi neden davranıyor?
One = 20; 've' one.setInteger (20); 'arasında büyük bir fark vardır ve sarıcı sınıfları ile ilgisi yoktur. İlk snippet'in bir = 20; 'si, ikinci snippet'te bir = yeni OwnInteger (20); – Eran
Bu sınıflar, muhtemelen _are_ referans türleri oldukları için referans türleri gibi davranırlar. Bir referansı farklı bir nesneye işaret ettiğinizde, diğer işaretçiyi değiştirmezsiniz. İşaretçiler bağımsızdır. Sadece _object_ ile aynı _object_ işaretçileri tarafından görülebilen değişiklikler. JLS'nin dediği gibi, Java'nın "referansları ... işaretçiler" olduğunu unutmayın. –