String toString()
getClass().getName() + '@' + Integer.toHexString(hashCode())Top
[商品コード, 商品名, 商品定価]
- // 1301
- // package product;
- // 抽象商品クラスです。
- // 商品を扱うクラスが持っていなければならないメソッドを提供しています。
- public abstract class AbstractProduct {
- private String code; // 商品コード
- private String name; // 商品名
- // 商品オブジェクトを文字列化します。
- public String toString() {
- return "[" + getCode() + ", " + getName() + ", " + getPrice() + "]";
- }
- :
- }
- // 1301 = 1201
- // package application;
- import product.*;
- // 商品クラスをテストするクラスです。
- public class TestProduct {
- public static void main(String[] args) {
- Product p1 = new Product(args[0], args[1], args[2]);
- System.out.println("商品のインスタンスを生成しました。 p1 = " + p1);
- System.out.println(" code = " + p1.getCode());
- System.out.println(" name = " + p1.getName());
- System.out.println(" price = " + p1.getPrice());
- }
- }
□ 実行結果
$ java -classpath classes application.TestProduct A001 パソコン 188000 商品のインスタンスを生成しました。 p1 = [A001, パソコン, 188000] code = A001 name = パソコン price = 188000
- // 1301
- // package product;
- // 割引商品クラスです。
- // ひとつの商品に対するフィールドやフィールドを操作するためのメソッドを
- // 提供しています。
- public class DiscountProduct extends Product implements DiscountInterface {
- private int discount; // 商品割引率
- :
- // 商品オブジェクトを文字列化します。
- public String toString() {
- return "[" + getCode() + ", " + getName() + ", " + getPrice() + ", " + getDiscount() + "%]";
- }
- :
- }
- // 1301
- // package product;
- // セット商品クラスです。
- // ひとつまたは複数の商品を集めて、割引したものをセット商品として扱います。
- // セット商品に対するフィールドやフィールドを操作するためのメソッドを
- // 提供しています。
- public class SetProduct extends AbstractProduct implements DiscountInterface {
- private int discount; // セット商品割引率
- private AbstractProduct[] products; // セット商品リスト
- :
- // セット商品オブジェクトを文字列化します。
- public String toString() {
- return "[" + getCode() + ", " + getName() + ", " + getDiscount() + ", " + getPrice() + "]";
- }
- :
- }
boolean equals(Object obj)
int hashCode()
- public class HashCode01 {
- public static void main(String[] args) {
- String s1 = new String("Hello");
- String s2 = new String("Hello");
- System.out.println(" (s1 == s2) = " + (s1 == s2));
- System.out.println(" s1.equals(s2) = " + s1.equals(s2));
- System.out.println("(s1.hashCode() == s2.hashCode()) = " + (s1.hashCode() == s2.hashCode()));
- System.out.println();
- StringBuffer sb1 = new StringBuffer("Hello");
- StringBuffer sb2 = new StringBuffer("Hello");
- System.out.println(" (sb1 == sb2) = " + (sb1 == sb2));
- System.out.println(" sb1.equals(sb2) = " + sb1.equals(sb2));
- System.out.println("(sb1.hashCode() == sb2.hashCode()) = " + (sb1.hashCode() == sb2.hashCode()));
- }
- }
□ 実行結果
$ java HashCode01 (s1 == s2) = false s1.equals(s2) = true (s1.hashCode() == s2.hashCode()) = true (sb1 == sb2) = false sb1.equals(sb2) = false (sb1.hashCode() == sb2.hashCode()) = false
- // 1302
- // package product;
- // 抽象商品クラスです。
- // 商品を扱うクラスが持っていなければならないメソッドを提供しています。
- public abstract class AbstractProduct {
- private String code; // 商品コード
- private String name; // 商品名
- :
- // 商品オブジェクトが等しいか否かを判定します。
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj instanceof AbstractProduct) {
- return code.equals(((AbstractProduct)obj).getCode());
- }
- return false;
- }
- // 商品オブジェクトのハッシュ・コードを返します。
- public int hashCode() {
- return code.hashCode();
- }
- :
- }
- // 1302
- // package application;
- // import product.*;
- // 商品クラスをテストするクラスです。
- public class TestProduct {
- public static void main(String[] args) {
- Product p1 = new Product(args[0], args[1], args[2]);
- System.out.println("商品のインスタンスを生成しました。 p1 = " + p1);
- System.out.println(" hash = " + p1.hashCode());
- Product p2 = new Product(args[0], args[1], args[2]);
- System.out.println("商品のインスタンスを生成しました。 p2 = " + p2);
- System.out.println(" hash = " + p2.hashCode());
- System.out.println();
- System.out.println(" (p1 == p2) = " + (p1 == p2));
- System.out.println("p1.equals(p2) = " + (p1.equals(p2)));
- }
- }
□ 実行結果
$ java -classpath classes application.TestProduct A001 パソコン 188000 商品のインスタンスを生成しました。 p1 = [A001, パソコン, 188000] hash = 1984080 商品のインスタンスを生成しました。 p2 = [A001, パソコン, 188000] hash = 1984080 (p1 == p2) = false p1.equals(p2) = true