在class的构造函数能否修改自己为令一个实例

时间:2008-06-11 05:24:08   来源:论坛整理  作者:  编辑:chinaitzhe
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





class A {

    public static A defaultA = new A();

    

    private A(){

        //...

    }

    

    public A(String key){

        if(key==null){

            this = defaultA //这里始终用一个默认的实例, 把自己变成defautA, 不用生成一个新的实例,  请问如何写?

        }else{

            //这里执行其它代码实例化一个新的对象

        }

        

    }

    

}




网友回复:
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





//不知道这个能不能满足需求

class A {



    public static A defaultA = new A();



    private A() {

        // ...

    }



    public A(String key) {

        // ....



    }



    public A getInstance(String key) {

        if (key == null) {

            return defaultA;

        } else {

            return new A("");

        }

    }

}




网友回复:绝对不可以this = defaultA这种写法。
楼上的写法可以。但也可以使用单例模式来做。
网友回复:
引用 1 楼 anqini 的回复:
Java code
//不知道这个能不能满足需求
class A {

public static A defaultA = new A();

private A() {
// ...
}

public A(String key) {
// ....

}

public A getInstance(String key) {
if (key == null) {
return defaultA;
} else {
return new A("");
}
}
}

=====================
不能满足. 有些情况下我要用上我说的功能. 比如:有可能我会在A的构造函数中调用 this = getInstance(xxx);

网友回复:我记得以前在JDK的某个类中好象有类似我说的功能,但又不记得是那个类,我不知自己是否记错了.
网友回复:
引用 2 楼 tangwei168 的回复:
绝对不可以this = defaultA这种写法。
楼上的写法可以。但也可以使用单例模式来做。

我靠楼上的本来就是单例模式,
呵呵用字符串参数决定调用那一个构造函数,很好写,也很简单,祝你成功啊,可以看看1楼的,虽然简单但是说明了问题
网友回复:LZ这样的想法本身就是有问题的,比如说this = getInstance(xxx); 这样根本就是行不通的
在一个等式的左边,java语法要求一定要是个变量~所以还是换个思维方式吧,呵呵
The left-hand side of an assignment must be a variable
引用 3 楼 lzheng2001 的回复:
引用 1 楼 anqini 的回复:
Java code
//不知道这个能不能满足需求
class A {

public static A defaultA = new A();

private A() {
// ...
}

public A(String key) {
// ....

}

public A getInstance(String key) {
if (key == null) {
return defaultA;
} else {
return new A("");
}


网友回复:class A {

public static A defaultA = new A();

private A() {
// ...
}

public A(String key) {
// ....

}

public A getInstance(String key) {
if (key == null) {
return defaultA;
} else {
return new A("");
}
}

单态模式。。。
网友回复:我想先确定有没有直接实现我想法的写法。 假如没有"直接"的方法,其它方法再考虑.
我要 this = defaultA 类似这样的功能。
关键字:class,构造,函数,能否,修改,一个,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面