A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王舜民 于 2012-7-16 17:17 编辑

看到 毕向东基础视频18天02
毕老师这么说了:
Runtime对象 ,
该类并没有提供构造函数。
说明不可以new对象。那么会直接想到该类中的方法都是静态的。为什么会想到该类中的方法都是静态的
发现该类中还有非静态方法。 额,不是说了该类中的方法都是静态的吗?怎么还会有非静态的,这个应该怎么理解啊?

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
本帖最后由 黑马刘涛 于 2012-7-16 16:46 编辑

public static Runtime getRuntime()返回与当前 Java 应用程序相关的运行时对象。Runtime 类的大多数方法是实例方法,并且必须根据当前的运行时对象对其进行调用。
每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时
应用程序不能创建自己的 Runtime 类实例。 我想应该是毕老师讲错了,实际上Runtime类就一个静态方法getRuntime,该方法返回了一个Runtime类实例,调用Runtime类方法可以这样做:Runtime.getRuntime().halt(int status);强行终止目前正在运行的 Java 虚拟机。

第一个问题:如果一个类没有构造函数,有两种情况:1.该类为抽象类,子类复写抽象方法,继承父类方法,创建子类对象调用父类方法。
2.该类不希望用户自己创建该类实例对象,而是通过调用该类某个静态函数去返回一个该类实例对象,然后去调用类的其他函数。如runtime类。

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
Runtime类中 虽然没有构造方法 但是其有一个静态方法 getRuntime(),返回与当前 Java 应用程序相关的运行时对象。
Runtime 类的大多数方法是实例方法,并且必须根据当前的运行时对象对其进行调用。
回复 使用道具 举报
Java 的Runtime 对象

  在Java 语言内部,java.lang.Runtime 对象就是一个使用单例模式的例子。在每一个Java 应用程序里面,都有惟一的一个Runtime 对象。通过这个Runtime 对象,应用程序可以与其运行环境发生相互作用。
Runtime 类提供一个静态工厂方法getRuntime()::
public static Runtime getRuntime();

  通过调用此方法,可以获得Runtime 类惟一的一个实例:
Runtime rt = Runtime getRuntime();

  Runtime 对象通常的用途包括:执行外部命令;返回现有内存即全部内存;运行垃圾收集器;加载动态库等。下面的例子演示了怎样使用Runtime 对象运行一个外部程序。

  代码清单8:怎样使用Runtime 对象运行一个外部命令
import java.io.*;
public class CmdTest
{
public static void main(String[] args) throws IOException
{
Process proc = Runtime.getRuntime().exec("notepad.exe");
}
}


  上面的程序在运行时会打开notepad 程序。应当指出的是,在Windows 2000 的环境中,如果需要打开一个Word 文件,而又不想指明Word 软件安装的位置时,可以使用下面的做法:
Process proc = Runtime.getRuntime().exec(
"cmd /E:ON /c start MyDocument.doc");

  在上面,被执行的命令是start MyDocument.doc ,开关E:ON 指定DOS 命令处理器允许命令扩展,而开关/C 指明后面跟随的字符串是命令,并在执行命令后关闭DOS 窗口,start 命令会开启一个单独的窗口执行所提供的命令。

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
黑马刘涛 发表于 2012-7-16 16:41
public static Runtime getRuntime()返回与当前 Java 应用程序相关的运行时对象。Runtime 类的大多数方法是 ...

我在网上查到是这样的:
//Runtime类;本类的定义没有构造 方法,因为本类的构造 方法已经被 私有化了。
就像你说的.该类不希望用户自己创建该类实例对象,而是通过调用该类某个静态函数去返回一个该类实例对象,然后去调用类的其他函数。如runtime类

//public static Runtime getRuntime()直接使用静态方法就可以取得Runtime类的实例。

//public static Runtime getRuntime() 取得Runtime类的实例

就像你说的那样,就是静态方法。
谢谢!

点评

you're welcome!  发表于 2012-7-16 17:12
回复 使用道具 举报
鲍霄霄 发表于 2012-7-16 16:51
Java 的Runtime 对象

  在Java 语言内部,java.lang.Runtime 对象就是一个使用单例模式的例子。在每一个 ...

不好意思,刚才刷新的时候还没看到你的回复,谢谢!
回复 使用道具 举报
孙新强 发表于 2012-7-16 16:45
Runtime类中 虽然没有构造方法 但是其有一个静态方法 getRuntime(),返回与当前 Java 应用程序相关的运行时 ...

现在懂你说的了:lol
回复 使用道具 举报
为什么在开始说都是静态的呢?因为runtime类不希望用户自己创建该类实例对象,你能利用的就有Runtime.方法名,也就是静态方法了,所以 说都是静态的。
当你发现,能通过其中的静态方法getRuntime()获取一个Runtime实例的时候,通过Runtime对象点出来一些非静态方法,你就会发现,其中还有一些非静态方法了。
回复 使用道具 举报
为什么在开始说都是静态的呢?因为runtime类不希望用户自己创建该类实例对象,你能利用的就有Runtime.方法名,也就是静态方法了,所以 说都是静态的。
当你发现,能通过其中的静态方法getRuntime()获取一个Runtime实例的时候,通过Runtime对象点出来一些非静态方法,你就会发现,其中还有一些非静态方法了。

点评

刚打开jdk看了,原来是这个意思  发表于 2012-7-16 17:37
回复 使用道具 举报
李东升 发表于 2012-7-16 17:22
为什么在开始说都是静态的呢?因为runtime类不希望用户自己创建该类实例对象,你能利用的就有Runtime.方法 ...

恩我刚打开看过了,原来毕老师是这个意思,谢谢啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马