Java: 对象声明
Java: object declaration
在 Java 中声明对象时:
Runtime rt = Runtime.getRuntime();
Process lsProc = rt.exec("who -q");
InputStream in = lsProc.getInputStream();
为什么 lsproc
没有这样声明 -> Process lsproc = new Process
?
对象 lsproc
如何保存另一个函数的值?
因为returns一个Process
。参见 here #exec(java.lang.String)
Process lsProc = rt.exec("who -q");
仅此一行就意味着,
这意味着 Runtime
Class 的方法 exec
返回类型 Process
的实例 IsProc
。
public Process exec(String[] cmdarray, String[] envp, File dir)
609 throws IOException {
610 return new ProcessBuilder(cmdarray)
611 .environment(envp)
612 .directory(dir)
613 .start();
614 }
它返回类型为 Process
的 ProcessBuilder
的实例,这意味着 Process 是抽象的 class 而 ProcessBuilder
是具体的 class .
现在你可能会遇到一个问题,如何
Process pro = new ProcessBuilder(..);
有效,引导您阅读多态性。
方法 rt.exec("who -q")
可以 return 对类型 Process
的实例的引用。它可能会通过调用 new Process (..)
(或者实际上,因为 Process
是一个抽象 class,通过创建 [=12= 的子 class 的实例来创建该实例本身]), 或者它可以从其他地方检索它。
遵循 Runtime.exec(String)
方法的调用链导致此调用:
return new ProcessBuilder(cmdarray)
.environment(envp)
.directory(dir)
.start();
start
方法调用 ProcessImpl.start
,它实际上创建了 Process
实例。
在 Java 中声明对象时:
Runtime rt = Runtime.getRuntime();
Process lsProc = rt.exec("who -q");
InputStream in = lsProc.getInputStream();
为什么 lsproc
没有这样声明 -> Process lsproc = new Process
?
对象 lsproc
如何保存另一个函数的值?
因为returns一个Process
。参见 here #exec(java.lang.String)
Process lsProc = rt.exec("who -q");
仅此一行就意味着,
这意味着 Runtime
Class 的方法 exec
返回类型 Process
的实例 IsProc
。
public Process exec(String[] cmdarray, String[] envp, File dir)
609 throws IOException {
610 return new ProcessBuilder(cmdarray)
611 .environment(envp)
612 .directory(dir)
613 .start();
614 }
它返回类型为 Process
的 ProcessBuilder
的实例,这意味着 Process 是抽象的 class 而 ProcessBuilder
是具体的 class .
现在你可能会遇到一个问题,如何
Process pro = new ProcessBuilder(..);
有效,引导您阅读多态性。
方法 rt.exec("who -q")
可以 return 对类型 Process
的实例的引用。它可能会通过调用 new Process (..)
(或者实际上,因为 Process
是一个抽象 class,通过创建 [=12= 的子 class 的实例来创建该实例本身]), 或者它可以从其他地方检索它。
遵循 Runtime.exec(String)
方法的调用链导致此调用:
return new ProcessBuilder(cmdarray)
.environment(envp)
.directory(dir)
.start();
start
方法调用 ProcessImpl.start
,它实际上创建了 Process
实例。