日期:2014-05-20  浏览次数:20742 次

如何判断某个实例是否存在
class   A
{
    private   String   name;

    private   A   a;

    public   A   getInstance(String   name){

        if(属性为name的A实例不存在)
            a   =   new   A();

        return   a;
    }
}

class   b
{
        public   static   void   main(String[]   args){
            A   a   =   new   A();

            //aa创建成功,因为实例属性为 "123 "的实例不存在
            A   aa   =   a.getInstance( "123 ");

            //aaa创建不成功,因为属性为 "123 "的实例已经存在
            A   aaa   =   a.getInstance( "123 ");

            //aaaa创建成功,因为实例属性为 "1234 "的实例不存在
            A   aaaa   =   a.getInstance( "1234 ");
        }
}

有没有什么好的办法实现上述功能,问题的实质就是判断某个具体的实例是否存在。


------解决方案--------------------
加个列表记录吧
------解决方案--------------------
楼主要判断新建的实例是否申请了新的空间而不是简单的引用已有对象?
------解决方案--------------------
一开始以为楼主是要搞singlton模式,后来看了一下不是,
这样的需求应该楼主完成,而不是把一个类设计成这样,何况这样设计难度也似乎太大了,也不妨考虑楼上意见
------解决方案--------------------
楼主的需求太不合理,重新设计吧,别浪费这个时间了
------解决方案--------------------
再用个类包装一下,不过这样的设计总觉得不好,就算参考一下吧,实际应用还是算了吧,容易出问题

package csdn;

import java.util.*;
public class NewA{
private static HashSet <String> set = new HashSet <String> ();
public static A2 newA(String name){
if(set.contains(name)){
return null;
}
set.add(name);
return A2.getInstance(name);
}

public static void main(String args[]){
System.out.println(NewA.newA( "a "));
System.out.println(NewA.newA( "a "));
}
}
class A2{
private String name;
private A2(String name){
this.name = name;
}
public static A2 getInstance(String name){
return new A2(name);
}

public String toString(){
return this.name;
}
}

------解决方案--------------------