ClassCastException – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

ClassCastException – Java – Fórum – Programujte.comClassCastException – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
me.name0
Návštěvník
2. 7. 2016   #1
-
0
-

package test;

public class Test {

    public static void main(String[] args) {
        First[] first = new First[5];
        Second[] second = (Second[]) first;
    }
    
}


class First {
}

class Second extends First {
}

Exception in thread "main" java.lang.ClassCastException: [Ltest.First; cannot be cast to [Ltest.Second]

Prečo cannot be cast??

Nahlásit jako SPAM
IP: 213.151.238.–
me.name0
Návštěvník
2. 7. 2016   #2
-
0
-

inak vlákno nebolo vyriešené , nechápem prečo sa tak tvári....

Nahlásit jako SPAM
IP: 213.151.238.–
Kit+15
Guru
2. 7. 2016   #3
-
0
-

#1 me.name
Protože Second[] není třída.

Jinak to přetypování je zbytečné a nevidím k němu žádný důvod.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:e1d7:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
me.name0
Návštěvník
2. 7. 2016   #4
-
0
-

#3 Kit
pretože potrebujem prístup k premenným a metodam triedy second

Nahlásit jako SPAM
IP: 213.151.238.–
Kit+15
Guru
2. 7. 2016   #5
-
0
-

#4 me.name
V tom případě bys neměl použít dědičnost, ale kompozici.

Jenom mi hlava nebere, k čemu je dobrý přístup k proměnným třídy. Třída má být zapouzdřena.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:e1d7:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
me.name0
Návštěvník
2. 7. 2016   #6
-
0
-

to čo som sem dal ako príklad je príklad, lebo som sem nechcel kopirovat cely kod, ale v tom kode to potrebujem...

takže to ani nepojde nijako spravit?

Nahlásit jako SPAM
IP: 213.151.238.–
Řešení
Kit+15
Guru
2. 7. 2016   #7
-
0
-
Vyřešeno Nejlepší odpověď

#6 me.name
Second není potomkem třídy First. Zkus se zamyslet nad tím nesmyslem.

Chceš dělat něco, co je v rozporu s OOP. Už tak jsi toho napáchal hodně a teprve teď tě Java zarazila. Tak to udělej znovu a pořádně.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:e1d7:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
me.name0
Návštěvník
2. 7. 2016   #8
-
0
-

už mi to docvaklo...

First[] first = new First[5];  som napisal zle , tam malo byť

First[] first  = new Second[5];

už to ide...

Nahlásit jako SPAM
IP: 213.151.238.–
Kit+15
Guru
2. 7. 2016   #9
-
0
-

#8 me.name
Takhle je to správně. Dokonce zmizelo i přetypování.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:e1d7:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý