Czy są jakieś koszty ogólne, gdy rzucamy obiekty jednego rodzaju do drugiego? Lub kompilator po prostu rozwiązuje wszystko i nie ma żadnych kosztów w czasie wykonywania?Czy rzutowanie Java wprowadza koszty ogólne? Czemu?
Czy to ogólne, czy są różne przypadki?
Załóżmy na przykład, że mamy tablicę Object [], gdzie każdy element może mieć inny typ. Ale zawsze wiemy na pewno, że, powiedzmy, element 0 jest podwójnym, element 1 jest ciągiem. (Wiem, że to niewłaściwy projekt, ale załóżmy, że musiałem to zrobić.)
Czy informacje o typie Java są nadal przechowywane w czasie wykonywania? Lub wszystko jest zapomniane po kompilacji, a jeśli zrobimy (podwójne) elementy [0], po prostu podążymy za wskaźnikiem i zinterpretujemy te 8 bajtów jako podwójne, cokolwiek to jest?
Nie bardzo wiem, jak typy są wykonywane w Javie. Jeśli masz jakieś zalecenia dotyczące książek lub artykułów, to dziękuję.
Wydajność instanceof i casting jest całkiem dobra. Opublikowalem trochę czasu w Java7 na temat różnych podejść do problemu tutaj: http://stackoverflow.com/questions/16320014/java-optimization-nitpick-is-it-faster-to-cast-something-and-let-it- throw-excep/28858680 # 28858680 – Wheezil
To drugie pytanie ma bardzo dobre odpowiedzi http://stackoverflow.com/questions/16741323/casting-performance-in-different-levels-when-casting-down – user454322