Path: csiph.com!aioe.org!.POSTED.KClibdFDvSdkz/QY4hOaKw.user.gioia.aioe.org!not-for-mail From: "Dr.UgoGagliardelli" Newsgroups: it.comp.java Subject: =?UTF-8?Q?Re=3a_perch=c3=a8_non_funziona_questo_cast=3f?= Date: Sun, 8 Sep 2019 08:39:25 +0200 Organization: Aioe.org NNTP Server Lines: 52 Message-ID: References: NNTP-Posting-Host: KClibdFDvSdkz/QY4hOaKw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 Content-Language: it-IT X-Antivirus-Status: Clean X-Antivirus: Avast (VPS 190907-4, 07/09/2019), Outbound message X-Notice: Filtered by postfilter v. 0.9.2 Xref: csiph.com it.comp.java:9329 Il 07.09.2019 21.03, Gioacchino ha scritto: > Il 07/09/2019 09:14, Dr.UgoGagliardelli ha scritto: >> Il 06.09.2019 21.04, Gioacchino ha scritto: >>> Metodo (List   numbers) ... >>> >>> >>> poi in un ciclo: >>> >>> for ( Number n : numbers ) >>> >>> etc >>> >>> e mi da errore, mi dice type mismatch e che non puņ castare (? super >>> number) to number , e mi propone >>> >>> for ( Object n : numbers ) >>> >>> >>> Certamente object č una superclasse, ma non posso usare la stessa >>> classe Number? >> Ebbene no. Hai una lista che ammette le superclassi di Number, quindi >> solo Object. > > > quindi Object e Number si possono assegnare a Object , > ma Object non si puņ assegnare a Number , giusto? Ni. L'espressione for ( Object n : numbers ) usa l'iteratore di numbers, ogni n dovra' essere un T di numbers, ovvero: List numbers; oppure Number[] numbers; ammettono sia: for ( Object o : numbers ) che: for ( Number o : numbers ) in entrambi i casi puoi inserire in numbers anche un oggetto che estenda Number. Mentre puoi sempre fare un cast ad un tipo ammesso che che l'istanza di cui fai il cast estenda quel tipo. Ad esempio: for ( Object o : numbers ) { Number n = (o istanceof Number)?(Number)o:null; ma anche: Number n = (o istanceof Integer)?(Integer)o:null; oppure: Integer n = (o istanceof Integer)?(Integer)o:null; Viceversa l'istanza di qualsiasi classe puo' sempre essere assegnata ad un Object, in virtu' del fatto che in Java la gerarchia di qualsiasi oggetto discende da Object.