从Java Object获取价值

时间:2013-12-07 20:51:25

标签: java

我有这个用于存储连接凭证的对象:

public static class NewAgentObj
    {

        private String hostName;
        private int port;
        private String userName;
        private String passwd;

        public static NewAgentObj newInstance()
        {
            return new NewAgentObj();
        }

        public NewAgentObj()
        {

        }

        /**
         * An easier way to set a new value or optional arguments are provided when create a new instance. Can be used as alternative to set method
         *
         * @param hostName
         * @return
         */
        public NewAgentObj hostName(String hostName)
        {
            this.hostName = hostName;
            return this;
        }

        /**
         *
         * @param port
         * @return
         */
        public NewAgentObj port(int port)
        {
            this.port = port;
            return this;
        }

        /**
         *
         * @param userName
         * @return
         */
        public NewAgentObj userName(String userName)
        {
            this.userName = userName;
            return this;
        }

        /**
         *
         * @param passwd
         * @return
         */
        public NewAgentObj passwd(String passwd)
        {
            this.passwd = passwd;
            return this;
        }

        public String getHostName()
        {
            return hostName;
        }

        public int getPort()
        {
            return port;
        }

        public String getUserName()
        {
            return userName;
        }

        public String getPasswd()
        {
            return passwd;
        }

    }

我使用此代码插入值:

NewAgentObj ob = NewAgentObj.newInstance().hostName(filed.getText());

但是当我尝试将数据导入另一个Java类时,我使用以下代码:

NewAgentObj ob = NewAgentObj.newInstance();

        Label finalFieldAgentName = new Label(ob.getHostName());

我得到空值。你能告诉我如何从Java对象中获取价值吗?

2 个答案:

答案 0 :(得分:4)

Singleton的重点在于它存储了Object的静态实例,因此可以在多个类之间重用。显然,如果每次拨打getInstance()时都会生成一个new对象,那么您永远无法保存数据;它几乎立即被丢弃。

要制作单身,请保留对实际实例的引用。

private static NewAgentObj instance; //your static, reusable instance

public static NewAgentObj newInstance(){
   if (instance == null){ 
       instance = new NewAgentObj(); //only create the Object if it doesn't exist
   }
   return instance;

}

为了清楚起见,我将此方法重命名为getInstance(),以便更准确地传达其目的。

请记住, 能够将对象作为参数传递给构造函数/方法,因此不需要单例模式。

答案 1 :(得分:0)

使用此行

NewAgentObj ob = NewAgentObj.newInstance();

您只获得具有所有空值的NewAgentObject的新实例。
因此,您将获得null。

而不是你必须使用单例模式来确保只有一个实例,它保存所有值。