Обычный класс с приватными полями и геттерами/сеттерами

public class Product {

	private String productName;
	private String brand;
	private String subBrand;

	public String getProductName() {
		return productName;
	}

	public void setProductName(String productName) {
		this.productName = productName;
	}

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public String getSubBrand() {
		return subBrand;
	}

	public void setSubBrand(String subBrand) {
		this.subBrand = subBrand;
	}

}

Проблема первая:
Если вызвать код

		Product milk = new Product();
		milk.setProductName("Останкинское");
		System.out.println(milk.getBrand());
		System.out.println(milk.getProductName());

То будет напечатано:

null
Останкинское

null — это не очень хорошо, т.к можно легко получить NullPointerException. Хотя иногда лучше и получить NPE

Сделаем так:

	private String productName = "";
	private String brand = "";
	private String subBrand = "";

Все NPE не будет.

Осталось небольшая проблема, что сеттеры нельзя записывать в строку, а хотелось бы так:

	Product milk = new Product().setProductName("Останкинское").setBrand("Белорусское качество").setSubBrand("Вкуснейшее");

Достаточно изменить в классе сеттеры. Все, теперь сеттеры возвращают экземпляр класса Product :

public class Product {

	private String productName = "";
	private String brand = "";
	private String subBrand = "";

	public String getProductName() {
		return productName;
	}

	public Product setProductName(String productName) {
		this.productName = productName;
		return this;
	}

	public String getBrand() {
		return brand;
	}

	public Product setBrand(String brand) {
		this.brand = brand;
		return this;
	}

	public String getSubBrand() {
		return subBrand;
	}

	public Product setSubBrand(String subBrand) {
		this.subBrand = subBrand;
		return this;
	}

}

Реклама