* @param Object... args メソッドのパラメータ
	 * @throws NoSuchMethodException 
	 * 
	 */
	public static Object invoke(Object o, String methodName, Object... args) throws SecurityException, ClassNotFoundException, NoSuchMethodException{
		StringBuffer tempMessage = new StringBuffer();
		Method method = null;

//		//argsArray:メソッドの引数の型配列
//		Class<?>[] argsArray = new Class<?>[args.length];
//		for(int i = 0; i < args.length; i++){
//			argsArray[i] = getClassObject(args[i]);
//			//スーパークラスを引数にとれるように修正
//		}
//		try {
//			method = o.getClass().getMethod(methodName, argsArray);
//		} catch (NoSuchMethodException e) {
//			try{
//				method = o.getClass().getDeclaredMethod(methodName, argsArray);
//			}catch (NoSuchMethodException e2) {
//					message = "NoSuchMethodException\r\n";
//					display.append(message);
//			}
//		}
		/////////////////////////////////////////
		//argsArray:メソッドの引数の型配列
		Class<?>[] argsArray = new Class<?>[args.length];
		for(int i = 0; i < args.length; i++){
			argsArray[i] = getClassObject(args[i]);
		}
		method = getMethod(o, args, methodName, argsArray);
		
		////////////////////////////////////////
		tempMessage.append("method: " + method.getName() + " is called.\r\n");
		
		if(Modifier.isPrivate(method.getModifiers())){
			method.setAccessible(true);
		}
		if(o.equals(null)){
			if(Modifier.isStatic(method.getModifiers()) == false){
				throw new NoSuchMethodException();
			}
		}
		
		try {
			Type returnType = method.getGenericReturnType();
			tempMessage.append("return type: " + returnType.toString() + "\r\n");
			if(returnType.equals(Void.TYPE)){
				tempMessage.append("return value: " + "なし\r\n");
			}else{
				tempMessage.append("return value: " + method.invoke(o, args).toString() + "\r\n");
			}
			message = tempMessage.toString();
			display.append(message);
			return method.invoke(o, args);
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
			message = tempMessage.append("IllegalArgumentException\r\n").toString();
			display.append(message);
		} catch (IllegalAccessException e) {
			e.printStackTrace();
			message = tempMessage.append("IllegalAccessException\r\n").toString();
			display.append(message);
		} catch (InvocationTargetException e) {
			e.printStackTrace();
			tempMessage.append("InvocationTargetException\r\n");
			message = tempMessage.append(e.getCause().toString() + "\r\n").toString();
			display.append(message);
		}
		return null;
	}