/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	static class Test {
	
		private String name;
		
		public Test(String name) {
			this.name = name;
		}
		
	    public String GetName() { return name; }
	    public void SetName(String name) { this.name = name; }
		
		@Override
	    public boolean equals(Object o) {
	    	if (o == null) return false;
	        if (o == this) return true;
	        if (!(o instanceof Test)) {
	            return (o instanceof String) && (name.equals(o));
	        }
	        Test t = (Test)o;
	        return name.equals(t.GetName());
	    }
		
	    @Override
	    public int hashCode() {
	    	return name.hashCode();
	    }
	    
	    @Override
	    public String toString() {
	    	return name;
	    }
		
	}
	
	public static void main (String[] args) throws java.lang.Exception
	{
		String x = "a";
		
		Test a = new Test(x);
		Test b = new Test(x);
		System.out.println(a.equals(b));
		System.out.println(a.equals(x));
		
		List<Test> test = new ArrayList<Test>();
		test.add(a);
		test.add(b);
		
		System.out.println(test.contains(new Test(x)));
		
	}
}