casting wg scjp

0

Mam pytanie w zwiazku z cytatem z pewnej ksiazki do scjp. Jak rozumiecie zdanie:

"the casting between an interface and an object that is not final is
always allowed"...

Chce sobie napisac kod ktory to sprawdza ale nie do konca rozumiem o jaka sytuacje tu chodzi... a czego sie nie da.

z gory dzieki

pozdrawiam!

0

Wg.mnie, tak:
Dozwolone jest rzutowanie pomiędzy interfejsem a obiektem, który nie jest skończony (dokończony, ukończony).

Hm... Trochę nielogicznie brzmi :]

0

ja to tak rozumiem jak na razie:
jezeli jest obiekt nie zadklarowany jako nie-"final" to mozna go rzutowac, jezeli jest "final" to nie mozna, ale dla mnie bez sensu bo obiekt zadeklarowany "final" mozna rzutowac tak samo jak nie-"final"

1
csh napisał(a)

"the casting between an interface and an object that is not final is
always allowed"...

Autor raczej nieprecyzyjnie sie wyrazil i pewnie chodzilo mu o obiekty klasy zadeklarowanej jako final. Np.:

interface Iface {}

public class Clazz {
	public static final void main(String[] args) {
		Clazz t = new Clazz();
		Iface i = (Iface) t; // tutaj uwaga
	}
}

Powyzszy kod sie skompiluje, ale wypluje ClassCastException. Natomiast jesli Clazz zadeklarujesz jako final, to kompilator nie przepusci rzutowania, bo klasa final Clazz nie jest Iface i juz nigdy nie bedzie.

0

a juz kumam, ma to sens co piszesz, dzieki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1