Java:对象声明

标签 java object initialization

在Java中声明对象时:

Runtime rt = Runtime.getRuntime();
Process lsProc = rt.exec("who -q");
InputStream in = lsProc.getInputStream();

为什么 lsproc 没有这样声明 -> Process lsproc = new Process? 对象 lsproc 如何保存另一个函数的值?

最佳答案

 Process lsProc = rt.exec("who -q");

这行本身就意味着,

这意味着 Runtime 类的 exec 方法返回 Process 类型的实例 IsProc

看看source code of exec method

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    }

它返回 ProcessBuilder 的实例,其类型为 Process,这意味着 Process 是一个抽象类,而 ProcessBuilder 是它的具体类。

现在你可能会遇到一个问题:如何

Process pro = new ProcessBuilder(..); 

有效,它会引导您阅读有关多态性的内容。

关于Java:对象声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33119778/

相关文章:

javascript - JavaScript 中函数声明的区别

c++ - 初始化非默认可构造元素的 std::array?

java - 如何将 "check"强制转换?

java - Hashtable<String,Integer[]> myhash = new Hashtable();

javascript - 仅使用 ES5、多个 Object.key 和 .map 导航多维对象以匹配 key

c++ - 从字符初始化 std::string

c++ - 使用常量代替宏

java - 按子数组的长度对数组进行排序

java - 将double舍入到区间内的数字,逐步定义

java.awt.Robot.keyPress 用于连续击键