menuButton Menü

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