これが私のコードです:
import java.util.HashMap;
class MyString
{
String string;
MyString(String string)
{
this.string = new String(string);
}
}
public class test
{
public void test3()
{
HashMap<MyString, Byte> byteHashMap = new HashMap<MyString, Byte>();
char c = 'A';
byte b = (byte)c;
String string = new String("The Letter A");
MyString myString = new MyString(string);
byteHashMap.put(myString, b);
if (byteHashMap.containsKey(myString))
//if (byteHashMap.containsKey(new MyString(string)))
{
System.out.println("true");
}
else
{
System.out.println("false");
}
}
public static void main(String[] args)
{
test testObject = new test();
testObject.test3();
}
}
コードがそのまま true を返す理由を知りたいです。ただし、if ステートメントを切り替えると (コメント行を参照)、false が返されます。
MyString クラスの equals メソッドをオーバーライドすることと関係があると思いますが、これにアプローチする方法がわかりません。
よろしく。