疫情没结束,在家闲出屁了,做了个力扣就寻思力扣是怎么把方法执行的,明明力扣代码区域没写main方法调用代码区的方法啊
然后写了个工具类:
package com.ning;
import com.alibaba.fastjson.JSON;
public class Utils {
/**
* 简化输出内容到控制台
* 将传入对象转为json,再输出
* 解决输出数组,显示数组地址的问题
*
* @param o 要输出的对象
*/
public static void showResToConsole(Object o) {
System.out.println(JSON.toJSON(o));
}
/**仿leetCode 只写一个方法,就能在控制台输出方法的结果
* 执行当前类的第一个方法
*
* @param nowClassObj 方法属于的对象
* @param param 方法输入的参数
*/
public static void invokeFirstMothod(Object nowClassObj, Object... param) {//执行类的第一个方法
try {
int i = 1;//执行第1个方法
Utils.showResToConsole(nowClassObj.getClass().getMethods()[3 + i].invoke(nowClassObj, param));
// Utils.showResToConsole(param.getClass().getSimpleName());
// 得出写在class最上面的方法是getMethods中的第4个方法
// for (Method method : nowClassObj.getClass().getMethods()) {
// Utils.showResToConsole(method.getName());
// }
} catch (Exception e) {
e.printStackTrace();
}
}
}
具体 使用方法如下(以力扣1342为例)
注:
1.需要测试的方法写在最上面
2.需要给方法输入的参数是写在main中obj上。
package com.ning.test20200220;
import com.ning.Utils;
import lombok.Data;
@Data
public class LeetCode {
public int numberOfSteps(int num) {
if (num == 0) return 0;
if (num % 2 == 1) {//奇数
return numberOfSteps(num - 1) + 1;
} else {//偶数
return numberOfSteps(num/2)+1;
}
}
public static void main(String[] args) {
// 方法输入的参数
// Object obj = new int[]{1, 2, 3, 4};//数组
//
Object obj = 6;//基础类型
// Object[] obj = new Object[]{//多参数
// 2,
// 2
// };
Utils.invokeFirstMothod(new LeetCode(), obj);
}
}
这样就可以愉快的力扣啦,像是在力扣代码区执行代码一样方便,还能享受代码提示,哈哈。