Z książki Effective Java Joshua Blocha, Tablice różnią się od typu ogólnego na dwa ważne sposoby. Pierwsze tablice są kowariantne. Typy generyczne są niezmienne. Kowariantny oznacza po prostu, że jeśli X jest podtypem Y, to X [] będzie również podtypem Y []. Tablice są kowariantne, ponieważ łańcuch jest podtypem obiektu …
W C # (i wielu innych językach) dostęp do prywatnych pól innych wystąpień tego samego typu jest całkowicie uzasadniony. Na przykład: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if (anotherFoo.aBool) ... } } Ponieważ specyfikacja C # (sekcje 3.5.1, 3.5.2) stwierdza, że dostęp do pól …
Według Java Language Sepecification , 3. edycja: Jest to błąd czasu kompilacji, jeśli klasa ogólna jest bezpośrednią lub pośrednią podklasą klasy Throwable. Chciałbym zrozumieć, dlaczego podjęto taką decyzję. Co jest nie tak z ogólnymi wyjątkami? (O ile wiem, typy generyczne są po prostu cukrem składniowym w czasie kompilacji i zostaną …
W ciągu ostatnich kilku miesięcy dużo miałem do czynienia z Luą i bardzo lubię większość funkcji, ale wciąż czegoś mi brakuje: Dlaczego nie ma continue? Jakie są obejścia tego problemu?
Zanim przeczytałem ten artykuł , pomyślałem, że kontrola dostępu w Rubim działa tak: public- może być dostępny przez dowolny obiekt (np. Obj.new.public_method) protected - można uzyskać dostęp tylko z samego obiektu, a także z dowolnych podklas private - to samo, co chronione, ale metoda nie istnieje w podklasach Jednak wydaje …
Jeśli utworzę bool w mojej klasie, po prostu coś takiego bool check, domyślnie ma wartość false. Kiedy tworzę ten sam bool w mojej metodzie bool check(zamiast w klasie), pojawia się błąd „użycie nieprzypisanej kontroli zmiennej lokalnej”. Czemu?
Biorąc pod uwagę prostą instrukcję przełącznika switch (int) { case 1 : { printf("1\n"); break; } case 2 : { printf("2\n"); } case 3 : { printf("3\n"); } } Brak instrukcji break w przypadku 2 oznacza, że wykonanie będzie kontynuowane wewnątrz kodu dla przypadku 3. To nie jest przypadek; został …
W C # i Javie (i być może także w innych językach) zmienne zadeklarowane w bloku „try” nie znajdują się w zakresie w odpowiednich blokach „catch” lub „final”. Na przykład poniższy kod nie jest kompilowany: try { String s = "test"; // (more code...) } catch { Console.Out.WriteLine(s); //Java fans: …
Nigdy tak naprawdę nie rozumiałem, dlaczego C ++ potrzebuje oddzielnego pliku nagłówkowego z tymi samymi funkcjami, co w pliku .cpp. Utrudnia to tworzenie klas i ich refaktoryzację, a także dodaje do projektu niepotrzebne pliki. A potem pojawia się problem z koniecznością dołączania plików nagłówkowych, ale z koniecznością jawnego sprawdzenia, czy …
Pracowałem z nowym programistą C ++ jakiś czas temu, kiedy zadał pytanie: „Dlaczego nazwy zmiennych nie mogą zaczynać się od cyfr?” Nie mogłem wymyślić odpowiedzi, poza tym, że niektóre liczby mogą zawierać tekst (123456L, 123456U) i nie byłoby to możliwe, gdyby kompilatorzy myśleli, że wszystko z pewną ilością znaków alfa …
Operator inkrementacji / dekrementacji pre / post ( ++i --) jest dość standardową składnią języka programowania (przynajmniej dla języków proceduralnych i obiektowych). Dlaczego Ruby ich nie obsługuje? Rozumiem, że możesz osiągnąć to samo za pomocą +=i -=, ale wykluczenie czegoś takiego wydaje się dziwnie arbitralne, zwłaszcza że jest tak zwięzłe …
Zastanawiam się tylko, dlaczego instrukcja Java 7 switchnie obsługuje nullprzypadku i zamiast tego wyrzuca NullPointerException? Zobacz skomentowaną linię poniżej (przykład zaczerpnięty z artykułu Java Tutorialsswitch ): { String month = null; switch (month) { case "january": monthNumber = 1; break; case "february": monthNumber = 2; break; case "march": monthNumber = …
Uwaga: nie chodzi o to, jak używać funkcji inline ani jak one działają, a raczej o to, dlaczego są robione tak, jak są. Deklaracja funkcji składowej klasy nie musi definiować funkcji inline, ponieważ jest to tylko faktyczna implementacja funkcji. Na przykład w pliku nagłówkowym: struct foo{ void bar(); // no …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.