Как мне создать экземпляр этого метода здесь? - PullRequest
0 голосов
/ 24 января 2011
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 ]

1 голос
/ 24 января 2011

Это просто return new NumNo(0);, что вы не хотите создавать правильно?Потому что это то же самое каждый раз?Если это так, вы можете создать статический экземпляр этого объекта.Например, приватная статическая final NewNo ZERO = new NewNo (0);

Это называется шаблоном flyweight, где вы создаете часто используемые экземпляры один раз.

0 голосов
/ 24 января 2011
return NumNo.getClass();

Чтобы вернуть класс вместо экземпляра.

Создать экземпляр с java.lang.Class.newInstance()

например:

klass = generate(stream);
object = klass.newInstance();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...