- 220
- 32
- CPU
- i5 7600
- Dissipatore
- Stock Intel
- Scheda Madre
- Gigabyte H270 HD3
- HDD
- Western Digital Blue 1TB + SSD NVME 960 EVO 250GB
- RAM
- 2 x 4GB Corsair Vengeance 2400 Mhz CL14
- GPU
- MSI RX 480 Gaming X 8GB
- PSU
- EVGA Supernova G2 550W
- Case
- Corsair Spec 03
- OS
- Windows 10 Pro x64
Salve ragazzi, sto studiando il manuale di Java 8 di De Sio. Oltre a fare esercizi, mi cimento a capire il codice degli esempi.
Sono arrivato al capitolo dei tipi generici, qui c'è un esempio d'uso (tuttavia non importante ai fini della domanda):
Non metto tutto il codice altrimenti diventa troppo lungo. Oltre a questa classe, di importante c'è la classe astratta Frutta (da cui estendono Mela e Arancia) che ha il metodo getPeso che, qualsiasi sia il tipo di frutto, restituisce il suo peso.
Non riesco a capacitarmi di come sia possibile la chiamata a getPeso() senza specificare il nome della classe, nel metodo aggiungiFrutta. Esso magicamente si riferisce al getPeso di questa classe Cesta.
Come è possibile?
In pratica il primo getPeso è riferito a Cesta e trova il peso corrente della Cesta, mentre il frutto.getPeso si rifà al metodo della classe Frutta che appunto restituisce il peso di quello specifico frutto (parametro di aggiungiFrutta).
Spero di essermi spiegato bene, vi ringrazio!
Sono arrivato al capitolo dei tipi generici, qui c'è un esempio d'uso (tuttavia non importante ai fini della domanda):
Codice:
import java.util.ArrayList;
public class Cesta<F extends Frutta> {
private ArrayList<F> frutta;
public Cesta() {
frutta = new ArrayList<>();
}
public ArrayList<F> getFrutta() {
return frutta;
}
public void aggiungiFrutta(F frutto) throws PesoException {
final int nuovoPeso = getPeso() + frutto.getPeso();
if (nuovoPeso > 2000) {
throw new PesoException("Troppo peso: " + nuovoPeso + " grammi!");
}
frutta.add(frutto);
System.out.println(frutto.getClass().getName() + " da " + frutto.getPeso() + " grammi aggiunta alla cesta");
}
public int getPeso() {
int peso = 0;
for (F frutto : frutta) {
peso += frutto.getPeso();
}
return peso;
}
}
Non metto tutto il codice altrimenti diventa troppo lungo. Oltre a questa classe, di importante c'è la classe astratta Frutta (da cui estendono Mela e Arancia) che ha il metodo getPeso che, qualsiasi sia il tipo di frutto, restituisce il suo peso.
Non riesco a capacitarmi di come sia possibile la chiamata a getPeso() senza specificare il nome della classe, nel metodo aggiungiFrutta. Esso magicamente si riferisce al getPeso di questa classe Cesta.
Come è possibile?
In pratica il primo getPeso è riferito a Cesta e trova il peso corrente della Cesta, mentre il frutto.getPeso si rifà al metodo della classe Frutta che appunto restituisce il peso di quello specifico frutto (parametro di aggiungiFrutta).
Spero di essermi spiegato bene, vi ringrazio!
Ultima modifica: