如何在此处创建此方法的实例?

时间:2011-01-24 00:32:45

标签: java return-value instance

public LeNo generate (PrintStream stream) {

    prepareOperands(stream);
    LeNo l = (LeNo)left;
    LeNo r = (LeNo)right;

    if (l instanceof NumNo && r instanceof NumNo) {
        return new NumNo((Integer.getInteger(l.name()).intValue()*Integer.getInteger(r.name())));
    }
    if ((l instanceof NumNo && l.name().equals("0"))||(r instanceof NumNo && r.name().equals("0"))) {
        return new NumNo(0); // cut of rest of code here....

有没有办法可以创建一个新的NumNo方法,而不必在我返回时创建它?

问题是我仍然想要返回NumNo,但没有创建新的NumNo。

2 个答案:

答案 0 :(得分:1)

只是return new NumNo(0);你不想创造对吗?因为每次都一样吗?如果是这样,您可以创建该对象的静态实例。例如, private static final NewNo ZERO = new NewNo(0);

这称为flyweight模式,您可以在其中创建一次常用实例。

答案 1 :(得分:0)

return NumNo.getClass();

返回一个类而不是一个实例。

使用java.lang.Class.newInstance()

创建实例

例如:

klass = generate(stream);
object = klass.newInstance();