Java-та е тъп боклук

131 отговора 0 прегледа
#1

Java-та е тъп боклук

class A {}
class B extends A {}

class program {

void main() {
A a = new A();
B b = a; // error: incompatible types
b = (B)a; // БУМ
}
}

Аналогичното в C++ мисля няма нужда да ви го разписвам и да ви казвам, че там проблеми няма.

Отговор
в отговор на Pekoнcтpykтop #2

Re: Java-та е тъп боклук

С кой C++ компилатор няма проблеми?

При мене на B *b = a дава:
error C2440: 'initializing' : cannot convert from 'class A *' to 'class B *'

Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast


[линк]
Отговор
в отговор на wqw #3

Re: Java-та е тъп боклук

Три вида кастове са ти дали. Джавешкия каст гърми директно.

Отговор
в отговор на Pekoнcтpykтop #4

Re: Java-та е тъп боклук

Бе в 11:30 е редно да е по-изтрезнял човек

Отговор
в отговор на Pekoнcтpykтop #5

Re: Java-та е тъп боклук

Ама ти верно ли не се сещаш, че за upcast-ване трябва да е обратно, т.е. A *a = b

Това във ООП принципно.

[линк]
Отговор
в отговор на wqw #6

Re: Java-та е тъп боклук

Ъпкеста е имплицитен, ясен и не ме интересува. Говорим за даункест в случая. Изобщо, възможен ли по някъв начин в жавата?

Отговор
в отговор на Pekoнcтpykтop #7

Re: Java-та е тъп боклук

В С# ъпкеста е лесен, понеже компилатора знае по време на компилиране. За даункаст не е съвсем ясно до рънтайм и обикновено се проверява с is и се кества с as.

Няма ли нещо подобно в Джава?

[линк]

--
One day it will make sense.
Отговор
в отговор на Pekoнcтpykтop #8

Re: Java-та е тъп боклук

instanceof ?

[линк]

--
One day it will make sense.
Отговор
в отговор на Pekoнcтpykтop #9

Re: Java-та е тъп боклук

Напълно вярно си е логически...
Ако искаш пробвай
A a = new B();
B b = a;

би трябавло да работи...ако не знаеш какво е а правиш проверка с инстансъф.

Отговор
в отговор на Гypy #10

Re: Java-та е тъп боклук

"Note, that casting can't always be done in both ways. If you are creating a Mammal, by calling "new Mammal()", you a creating a Object that is a Mammal, but it cannot be downcasted to Dog or Cat, because it's neither of them."

Яко. Значи не може. От тук произтичат някои интересни въпроси към джавистите, свързани с шаблонни задачи и повседневни таскове. Ама сега ше се мъча да измисля няква глупост дет да свърши работа, пък после ше го разискваме.

Отговор
в отговор на Pekoнcтpykтop #11

Re: Java-та е тъп боклук

Е това смислено ли ти изглежда:

class A {};
class B {};
A *a = new A;
B *b = reinterpret_cast<B*>(a);

Защото общо взето това правиш на С++

__________________________________
Bang postponed. Not Big enough. Reboot.
Отговор
в отговор на Pekoнcтpykтop #12

Re: Java-та е тъп боклук

В С++ нямаш проблем с B b = a; ама в Джавата и .НЕТ-а имаш, и той се нарича
Type checking...

Отговор
в отговор на Aaron #13

Re: Java-та е тъп боклук

Така е, концепцията им е такава да предпазят дева да прави глупости колкото се може повече.

Отговор
в отговор на Aaron #14

И методите дето ги няма от де идват

в С++?

Не че съм силен в теорията, ама тоя каст ми се вижда шашава работа дори на теория.

Отговор
в отговор на RealGuru #15

Re: И методите дето ги няма от де идват

И методите дето ги няма от де идват в С++?

Ми не знам, питай колегата Реконструктор :-)


Сега сериозно, ами може и шашава работа да се нарече, ама може и да не. Зависи.

Например във всеки ОО език даункаста към обект (и последващо използване на методи, които не са имплементирани) може да доведе до рънтайм грешка.

Идеята на Джавата и .НЕТ-а е тези грешки да се прихващат в компайл тайма, а не в рънтайма, въпреки че и при двете (Джава и .НЕТ) можеш да направиш даункастване и да изпаднеш отново в runtime error ако не правиш проверки или error handlings.

Т.е. при даункаста винаги трябва да се правят проверки.

Отговор
в отговор на Pekoнcтpykтop #16

Re: Java-та е тъп боклук

Аз пък не разбрах едно - как пък все се хващаш на работа дето джуркат на екзотичен за теб език?
Това не е като Ц-то, онова не е - ми не са, и това е. Толкоз ли няма позиции за Ц кодери?

чети и дишай по-леко
Отговор
в отговор на Pekoнcтpykтop #17

Re: Java-та е тъп боклук

Това го има във всички модерни езици с тайп сейфти - даже и С++ .НЕТ. Трябва да си малоумен да не разбереш защо.

Отговор
в отговор на Pekoнcтpykтop #18

Re: Java-та е тъп боклук

Нещо си се объркал, присвояванията и в ц++ вървят в обратната посока

Отговор
в отговор на Pekoнcтpykтop #19

Re: Java-та е тъп боклук

на кривата ракета, космоса и малък.
сега пък на теб джавата ти е виновна.

Отговор
в отговор на Pekoнcтpykтop #20

Re: Java-та е тъп боклук

и кви са тея повседневни задачи искащи даункаст?
трябва доста да си изкривя фантазията за да измисля даже некво редко и екзотично приложение на такава глупост.

Отговор