为什么我不必申报一个“a”;新";Java中的对象?

为什么我不必申报一个“a”;新";Java中的对象?,java,Java,为这可能是一个简单的问题道歉。我找不到任何直接的答案来回答这个问题。在下面的代码中,为什么不要求我创建“新”对象?我到底在给sequencer分配什么 import javax.sound.midi.*; public class MusicTest1 { public void play() { Sequencer sequencer = MidiSystem.getSequencer(); System.out.println("We got a

为这可能是一个简单的问题道歉。我找不到任何直接的答案来回答这个问题。在下面的代码中,为什么不要求我创建“新”对象?我到底在给sequencer分配什么

import javax.sound.midi.*;

public class MusicTest1 {

    public void play() {
        Sequencer sequencer = MidiSystem.getSequencer();

        System.out.println("We got a sequencer");
    } // close play

    public static void main(String[] args) {
        MusicTest1 mt = new MusicTest1();
        mt.play();
    }
}

如果您指的是
Sequencer Sequencer=MidiSystem.getSequencer()
,则调用类
MidiSystem
的静态方法,该方法返回
Sequencer
的实例。静态方法为您执行
newsequencer()

函数
getSequencer
创建一个新对象并返回它。如果它已经创建了一个对象,则可能返回相同的对象。这就是所谓的单例模式。

有一个类似的问题:如果没有看到该方法的代码,您无法确定它是单例模式(可能是工厂),但基于类名,它是有意义的。他们会将工厂称为.newSequencer()或.defaultSequencer()……啊,我明白了。谢谢你的迅速回复。