
public class MethodSelection {

	public Class constructedWith;

	// constructors 

	public MethodSelection( Object o ) {
		constructedWith = o.getClass();
		System.out.println("selected object constr");
	}
	public MethodSelection( String o ) {
		constructedWith = o.getClass();
		System.out.println("selected string constr");
	}
	public MethodSelection( long o ) {
		constructedWith = Long.TYPE;
		System.out.println("selected long constr");
	}
	public MethodSelection( int o ) {
		constructedWith = Integer.TYPE;
		System.out.println("selected int constr");
	}
	public MethodSelection( byte o ) {
		constructedWith = Byte.TYPE;
		System.out.println("selected byte constr");
	}
	public MethodSelection( short o ) {
		constructedWith = Short.TYPE;
		System.out.println("selected short constr");
	}
	public MethodSelection() {
		constructedWith = Void.TYPE;
		System.out.println("no args constr");
	}

	// static method selection

	public static Class get_static( Object o ) {
		System.out.println("selected object method");
		return o.getClass();
	}
	public static Class get_static( String o ) {
		System.out.println("selected string method");
		return o.getClass();
	}
	public static Class get_static( int o ) {
		System.out.println("selected int method");
		return Integer.TYPE;
	}
	public static Class get_static( long o ) {
		System.out.println("selected long method");
		return Long.TYPE;
	}
	public static Class get_static( byte o ) {
		System.out.println("selected byte method");
		return Byte.TYPE;
	}
	public static Class get_static( short o ) {
		System.out.println("selected short method");
		return Short.TYPE;
	}
	public static Class get_static() {
		System.out.println("selected no args method");
		return Void.TYPE;
	}

	// dynamic method selection

	public Class get_dynamic( Object o ) {
		System.out.println("selected object method");
		return o.getClass();
	}
	public Class get_dynamic( String o ) {
		System.out.println("selected string method");
		return o.getClass();
	}
	public Class get_dynamic( int o ) {
		System.out.println("selected int method");
		return Integer.TYPE;
	}
	public Class get_dynamic( long o ) {
		System.out.println("selected long method");
		return Long.TYPE;
	}
	public Class get_dynamic( byte o ) {
		System.out.println("selected byte method");
		return Byte.TYPE;
	}
	public Class get_dynamic( short o ) {
		System.out.println("selected short method");
		return Short.TYPE;
	}
	public Class get_dynamic() {
		System.out.println("selected no args method");
		return Void.TYPE;
	}
}
