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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝锡强 黑马帝   /  2011-12-21 19:44  /  2862 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郝锡强 于 2011-12-21 21:08 编辑

为什么Runtime被设计成一个在程序中不能创建它的实例对象,有怎么保证在程序中有一个Runtime的实例对象呢

该贴已经同步到 郝锡强的微博

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

7 个回复

倒序浏览
Runtime是一个单例类.为什么不能不能直接创建实例.建议从单例设计的思想作为起点考虑.一般都是提高程序的安全性.
需要通过getRuntime()方法获得Runtime的实例.


评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
余松霖 发表于 2011-12-21 20:09
Runtime是一个单例类.为什么不能不能直接创建实例.建议从单例设计的思想作为起点考虑.一般都是提高程序的安 ...

getRuntime()不是一个返回的实例对象么?这个实例对象就相当于创建的实例对象?
安全性是指程序能与环境相接么
回复 使用道具 举报
郝锡强 发表于 2011-12-21 20:22
getRuntime()不是一个返回的实例对象么?这个实例对象就相当于创建的实例对象?
安全性是指程序能与环境 ...

getRuntime()方法获取当前Runtime运行时对象的引用.调用Runtime类的实例方法.这里就是JVM的运行时环境.
至于安全性个人觉得是的.Runtime方法都是与JVM环境有关.自己创建不安全.

有什么错误和不足.望楼下指教.
回复 使用道具 举报
用面向对象的方式来思考,一个jvm只有一个运行时状态。所以只能有一个Runtime.这就是单例模式的典型应用{:soso_e100:}
回复 使用道具 举报
    因为runtime类的方法都是与当前运行的jvm进程相关,要保证jvm中只有一个实例,所以用单例设计模式
如果你看一下runtime源代码,就知道它的构造函数被private修饰了,这像就不能对它再实例化了。这样设计应该是为了安全性考虑的。
这是它的源代码
public class Runtime
{
     private static Runtime currentRuntime = new Runtime();//这里它自己有实例引用,
    /**
     * Returns the runtime object associated with the current Java application.
     * Most of the methods of class <code>Runtime</code> are instance
     * methods and must be invoked with respect to the current runtime object.
     *
     * @return  the <code>Runtime</code> object associated with the current
     *          Java application.
     */
    public static Runtime getRuntime() { //它通过这个方法获得自己引用的实例
            return currentRuntime;
    }

    /** Don't let anyone else instantiate this class */
    private Runtime() {}

评分

参与人数 1技术分 +2 收起 理由
吴上储 + 2 很给力!

查看全部评分

回复 使用道具 举报
郝锡强 黑马帝 2011-12-21 21:03:58
7#
本帖最后由 郝锡强 于 2011-12-21 21:08 编辑

先记下,谢谢几位,继续看视频
回复 使用道具 举报
郭繁森 黑马帝 2011-12-21 21:09:13
8#
untime   runtime   =   Runtime.getRuntime();
其实这个就是创建对象的,只是使用了单态模式,把构造方法的创建隐藏起来了,保证你在任何时候创建的对象都是相同的

这种做法保证你不会去创建第二个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马