Salve a tutti,
sto cercando di imparare java, ma ho già trovato un picciol problema con
il casting tra oggetti, qualcuno può sapientemente spiegarmi che ho
skazzato.
Grazie Simone Saravalli
class ClasseUno {
int x;
ClasseUno(int x) {
this.x = x;
}
int getValue() {
return x;
}
int getValueUno() {
return x;
}
}
class ClasseDue extends ClasseUno {
int y;
ClasseDue(int x, int y) {
super(x);
this.y = y;
}
int getValue() {
return y + super.getValue();
}
int getValueDue() {
return y + super.getValue();
}
}
class ProvaArray {
public static void main(String[] args) {
ClasseUno classe1=new ClasseUno (1);
ClasseDue classe2=new ClasseDue (2,3);
classe2=(ClasseDue) classe1; //quetso casting mi da l'errore
riportato qui sotto why?
}
}
/*
[simone@localhost simone]$ javac ProvaArray.java
[simone@localhost simone]$ java ProvaArray
Exception in thread "main" java.lang.ClassCastException: ClasseDue
at 0x40269480: java.lang.Exception.Exception(java.lang.String)
(/usr/lib/libgcj.so.3)
at 0x4026d5d0:
java.lang.RuntimeException.RuntimeException(java.lang.String)
(/usr/lib/libgcj.so.3)
at 0x40267b10:
java.lang.ClassCastException.ClassCastException(java.lang.String)
(/usr/lib/libgcj.so.3)
at 0x4023c4f7: _Jv_InterpMethod.continue1(_Jv_InterpMethodInvocation)
(/usr/lib/libgcj.so.3)
at 0x4023cc24: _Jv_InterpMethod.run(ffi_cif, void, ffi_raw,
_Jv_InterpMethodInvocation)
(/usr/lib/libgcj.so.3)
at 0x40239c25: _Jv_InterpMethod.run_normal(ffi_cif, void, ffi_raw, void)
(/usr/lib/libgcj.so.3)
at 0x403b624c: ?? (??:0)
at 0x4024f1f8: gnu.gcj.runtime.FirstThread.call_main()
(/usr/lib/libgcj.so.3)
at 0x402c3e90: gnu.gcj.runtime.FirstThread.run() (/usr/lib/libgcj.so.3)
at 0x4025c77c: _Jv_ThreadRun(java.lang.Thread) (/usr/lib/libgcj.so.3)
at 0x402233bc: _Jv_RunMain(java.lang.Class, byte const, int, byte const,
boolean)
(/usr/lib/libgcj.so.3)
at 0x0804882f: ?? (??:0)
at 0x40670082: __libc_start_main (/lib/i686/libc.so.6)
at 0x080486c1: ?? (??:0)
[simone@localhost simone]$
*/
|