大家都知道java命令执行执行是,Runtime.getRuntime().exec("whoami")
但是具体为啥这么写,我之前一直处于很蒙蔽的状态,接下来本文就是分析为啥命令执行要这么写。【为啥蛤蟆的这么长】
1、首先我们来看一段代码,执行后弹计算器,计算器被吃掉了。。。。
```
public static void main(String[] args) throws Exception
{
Runtime.getRuntime().exec("calc");
```
2、Runtime.getRuntime().exec("calc"),仔细一看,这段是调用了Runtime中的getRuntime方法,在调用exec方法????
从idea中看exec方法不是本来就在Runtime类中嘛
3、搞事情,直接调用
public static void main(String[] args) throws Exception
{
Runtime run = new Runtime();
run.exec("calc");
}
哦豁报错了
原来是这个Runtime的构造方法私有化了。。。。。。
所以不能直接去new出来这个对象。。。。
在接着看getRuntime方法,顿时理解了。。。。
因为私有化了,这个Runtime对象不能直接new出来,因此不能直接调用下面的exec方法。。。。【意思就是我虽然有嫩模,但是我就是不给你,你要经过我的getRuntime方法才能new一个对象,想白嫖可不行。。。】
```
class Runtime{
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
}
```
看完上面这个 你就知道整个命令执行过程了,,
Runtime.getRuntime().exec("calc")
Runtime执行getRuntime这个方法,才能new出Runtime这个对象,在去执行calc这个方法。。。。。。。