- Xiaomi 17 Ultra - jó az optikája
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Xiaomi 15T Pro - a téma nincs lezárva
- Honor Magic8 Lite - a félig sikerült bűvésztrükk
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Samsung Galaxy A56 - megbízható középszerűség
- Vivo X300 Pro – messzebbre lát, mint ameddig bírja
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Okosóra és okoskiegészítő topik
- Google Pixel topik
Új hozzászólás Aktív témák
-
TBG
senior tag
Az egészet nem értem egyébként.
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));Ez a 3 sor megcsinálja azt, amit itt szeretnél tenni...
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
car.setTires(carTires);Gondolom, azt vártad, hogy lesz egy 4 elemű listád [10,11,10,11] értékekkel? Vagy mi volt az elképzelés?
Egyébként így működött volna:public class Car {
private List<Tyre> tires = new ArrayList<Tyre>();
public void setTires(List<Tyre> t) {
this.tires.clear();
this.tires.addAll(t);
}
// Egyéb lekérdező metódusok
}
public class CarTest {
public static void main(String[] args) {
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
Car anotherCar = new Car();
anotherCar.setTires(carTires);
System.out.println("After (1): " + car.getTires().size());
System.out.println("After (2): " + anotherCarTires.size());
} -
WonderCSabo
félisten
A Java mindenhol referenciákat használ (kivéve a primitív típusokat, de itt most nincs olyan). Feltételezem a car.getTires() fv. car.tires listát adja vissza. Mivel referenciákról van szó, ekkor a main lokális változója, a carTires illetve a car.tires mező ugyanarra az objektumra fog mutatni. Ezután átadod a car.setTires(carTires) - el a carTirest, ami törli a belső saját listát. De a carTires is a belső listára mutat, tehát ugyanazt a listát törlöd ki! Ezután hozzáadod a belső listához ugyannak a már üres listának az elemeit, nyilván továbbra is üres marad.
Ez egy ismert jelenség, és direkt kitaláltak rá olyan mintákat, amivel ezt el lehet kerülni. Az egyik ilyen megoldás a defensive copy.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- ASUS RX 9060 XT 8GB GDDR6 PRIME OC Edition - Új, 3 év garancia - Eladó!
- Latitude 5520 27% 15.6" FHD IPS érintő i5-1145G7 16GB 512GB NVMe magyar vbill gar
- ASUS RTX 4070 12GB GDDR6X DUAL OC Edition - Eladó!
- EliteBook 860 G11 27% 16" FHD+ IPS Ultra 7 165U 32GB 512GB NVMe ujjlolv IR kam gar
- ProBook 440 G9 27% 14" FHD IPS i5-1235U 16GB 512GB NVMe IR kam gar
- BESZÁMÍTÁS! Akár részletfizetés 0% THM ÚJ AMD RYZEN AM4 processzorok 3 év garanciával 27% áfaval
- RÉSZLETFIZETÉS.BANKMENTES.KAMATMENTES. Arena Racer szövet gamer szék
- Honor laptop i5-12500H / RTX 2050 / 16GB RAM / 512GB SSD / 2K kijelző Erős, prémium gép!
- iPhone 17 256 GB Levander - Bontatlan !! www.stylebolt.hu - Apple eszközök és tartozékok - Számlás
- Samsung Galaxy XCover 5 / 4/64GB / Kártyafüggetlen / 12Hó Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


