java - Java 类中的无限组合?

标签 java oop

我正在阅读该项目的一些代码:https://code.google.com/p/java-google-translate-text-to-speech/我发现了这样的东西:

public class Translator {
    private static Translator translator;

    private Translator() {
    }

    public synchronized static Translator getInstance() {

        if (translator == null) {
            translator = new Translator();
        }
        return translator;

    }

    public void translate(TextTranslate textTranslate) throws APIError {

        Parse parse = new ParseTextTranslate(textTranslate);
        parse.parse();

    }

    public String translate(String text, String languageInput,
            String languageOutput) throws APIError {

        Text input = new Text(text, languageInput);
        TextTranslate textTranslate = new TextTranslate(input, languageOutput);
        Parse parse = new ParseTextTranslate(textTranslate);
        parse.parse();
        return textTranslate.getOutput().getText();

    }

    public String detect(String text) throws APIError {

        Text input = new Text(text);
        Parse parse = new ParseTextDetect(input);
        parse.parse();
        return input.getLanguage();

    }

}

那么该类包含同一个类的实例,那不是会出现无限合成吗?

最佳答案

Java 中根本不存在“无限组合”的危险。即使你编码

class Node {
    Node next;
    Node(){...}
    void setNext( Node x ){ next = x; }
    Node getNext(){ return next; }
}

你不会像一组俄罗斯娃娃那样将一个节点放在另一个节点中。请记住:“存储对象”的变量不包含该对象,该对象将愉快地生活在堆上。变量(此处:next)保存对对象的引用

粗略的 Node 类会产生一个 Node 对象的,每个引用它的下一个 Node,直到一个 null 存储在 中。 >下一步,就结束了。

关于java - Java 类中的无限组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105406/

相关文章:

java - android.support.v7.internal.widget.AdapterViewICS 类型不可见

java - 从工作线程使用 RecyclerView.setAdapter

python - Python 中的内部或外部异常类?

javascript - 强制子类不可变

java - java中外部类和内部类是如何关联的?

java - 从 Serializable 向下转换为 LinkedList<Class>

java - Spring 批处理 : reading a csv file and modify this list before putting the results in another file

java - swing 避免重写 jframe 选项

c++ - 为什么即使不调用公共(public)复制构造函数也需要它?

matlab - 常量属性中方法的函数句柄