Objekte mit Literalen vergleichen
Dieser kleine Tipp soll Ihnen zeigen, wie man Literale und Konstanten mit Java-Objekten vergleichen kann, ohne eine NullPointerException (NPE) zu riskieren.
Häufig findet man Quelltexte, die dem folgenden ähneln:
package de.notano.tip;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
public class GUI {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> setup());
}
private static void setup() {
setupLookAndFeel();
JFrame mainFrame = createMainFrame();
mainFrame.setVisible(true);
}
private static void setupLookAndFeel() {
try {
for(LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
if(laf.getName().equals("Nimbus")) {
UIManager.setLookAndFeel(laf.getClassName());
}
}
} catch(Exception ex) {
ex.printStackTrace();
System.exit(1);
}
}
private static JFrame createMainFrame() {
JFrame mainFrame = new JFrame("demo");
mainFrame.setPreferredSize(new Dimension(400, 400));
mainFrame.setLocationRelativeTo(null);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
return mainFrame;
}
}
Ist der Ausdruck laf.getName().equals("Nimbus") sicher vor einer NPE?
In der Praxis vermutlich schon. Aber was wäre mit "Nimbus".equals(laf.getName()) ?
Im folgenden Beispiel wird es schon wichtiger TODO