Cítim pri tejto knihe nejakú nostalgiu, keďže to bola moja prvá kniha o Jave. Avšak rozhodne by som ju už dnes
neodporúčal. Nielenže nereflektuje 15 rokov vývoja (Date vs LocalDate, try-with-resources...), ale je plná podivností a chýb.
Autor nemá asi rád System.out.println, preto si tam zadefinuje vlastnú print funkciu a v mnohých príkladoch
používa cez statický import `import static net.mindview.util.Print.*`. Inokedy predsa len používa System.out.println`, ale potom zas
dokonca `out.println`. To je riadne mätúce.
Všade pchá triedy, dokonca aj keď vysvetľuje dátové typy alebo základné konštrukcie. Úplne zbytočne tak mätie začiatočníka.
Používa FileReader, čož by nemal, pretože táto triedy vychádza z systémovej lokalizácie; bolo to opravené v Java 11, kde sa
kódovanie dá explicitne nastaviť. To je jedna z mnoha vychytáviek, ktoré skúsení Java programátori vedia, ale začiatočník
je v tom stratený. Samozrejme pri Swing aplikácii nespustí program na EDT (túto závažnú chybu sme vtedy robili asi všetci).
Samostatná kapitola sú výnimky, čo tam on s nimi robí...
Posúďte sami; autor vysvetľuje dedičnosť na tomto príklade:
//: reusing/Detergent.java // Inheritance syntax & properties.
import static net.mindview.util.Print. * ;
class Cleanser {
private String s = "Cleanser";
public void append(String a) {
s += a;
}
public void dilute() {
append(" dilute()");
}
public void apply() {
append(" apply()");
}
public void scrub() {
append(" scrub()");
}
public String toString() {
return s;
}
public static void main(String[] args) {
Cleanser x = new Cleanser();
x.dilute();
x.apply();
x.scrub();
print(x);
}
}
public class Detergent extends Cleanser { // Change a method:
public void scrub() {
append(" Detergent.scrub()");
super.scrub(); // Call base-class version
} // Add methods to the interface:
public void foam() {
append(" foam()");
} // Test the new class:
public static void main(String[] args) {
Detergent x = new Detergent();
x.dilute();
x.apply();
x.scrub();
x.foam();
print(x);
print("Testing base class:");
Cleanser.main(args);
}
}
/* Output: Cleanser dilute() apply() Detergent.scrub() scrub() foam() Testing base class: Cleanser dilute() apply() scrub()
*/
Drbne tam dve main funkcie??!!
Osobne by som odporúčal buď Cay Horstmanna alebo Herbert Schildta.
http://sd.blackball.lv/library/Thinking_in_Java_4th_edition.pdfBruce Eckel: Thinking in Java.
Je uplne mimo, posledni vydani je 2004.
Je na té knize něco špatně?