|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | (покажи всички)
Тема
|
Java-та е тъп боклук
|
|
Автор |
Pekoнcтpykтop (дарвинист) |
Публикувано | 20.10.10 11:25 |
|
class A {}
class B extends A {}
class program {
void main() {
A a = new A();
B b = a; // error: incompatible types
b = (B)a; // БУМ
}
}
Аналогичното в C++ мисля няма нужда да ви го разписвам и да ви казвам, че там проблеми няма.
| |
|
С кой 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
| |
|
Три вида кастове са ти дали. Джавешкия каст гърми директно.
| |
|
Бе в 11:30 е редно да е по-изтрезнял човек
| |
|
Ама ти верно ли не се сещаш, че за upcast-ване трябва да е обратно, т.е. A *a = b
Това във ООП принципно.
| |
|
Ъпкеста е имплицитен, ясен и не ме интересува. Говорим за даункест в случая. Изобщо, възможен ли по някъв начин в жавата?
| |
|
В С# ъпкеста е лесен, понеже компилатора знае по време на компилиране. За даункаст не е съвсем ясно до рънтайм и обикновено се проверява с is и се кества с as.
Няма ли нещо подобно в Джава?
http://stackoverflow.com/questions/1524197/downcast-and-upcast/1524226#1524226
--
One day it will make sense.
| |
|
instanceof ?
http://forum.codecall.net/java-tutorials/20719-upcasting-downcasting.html
--
One day it will make sense.
| |
|
Напълно вярно си е логически...
Ако искаш пробвай
A a = new B();
B b = a;
би трябавло да работи...ако не знаеш какво е а правиш проверка с инстансъф.
| |
|
"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."
Яко. Значи не може. От тук произтичат някои интересни въпроси към джавистите, свързани с шаблонни задачи и повседневни таскове. Ама сега ше се мъча да измисля няква глупост дет да свърши работа, пък после ше го разискваме.
| |
|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | (покажи всички)
|
|
|