java - 我是否正确使用 Java 中的静态方法?

标签 java oop methods static

我正在用 Java 创建在后台播放音乐的简单游戏。

音乐类包含那些静态方法:

  • 播放音乐();
  • 停止音乐();
  • changeVol(int vol);

一开始我创建了“Music”类的新对象,并调用了静态方法“playMusic”:

    new Music();    
    Music.playMusic();

之所以这些方法是静态的,是因为我想在应用程序启动时开始播放音乐,但您可以在设置中选择是否播放音乐。静态方法提供了最简单的方法,因为“设置”类没有“main”方法。

音乐类代码:

public class Music {
/// ... variables   

public Music(){     
    try{
        /// ... Preparing clip to play
        } catch (Exception e){
            /// ... Catching exception
        }
}

public static void playMusic(){
     /// ... starting music       
}

public static void stopMusic(){
      /// stoping music
}

public static void changeVol(int vol){
    /// changing volume 
}}

它工作得很好,但我想知道它是否符合 OOP 和 Java 标准?

完整音乐类代码:http://pastebin.com/d9XYX1gG

最佳答案

你可能想要做的是这样的:

Music music = new Music();
music.playMusic();

这里不需要静态方法。

如果您只想要一个可以从多个地方访问的实例,请尝试使用单例:

public class Music {

    private static instance Music instance;

    private Music() {
        // initialize your stuff here
    }

    // have your instance methods here

    /**
      * This is the method to access the Music singleton
      */
    public static Music getInstance() {
        if (instance == null) {
            instance = new Music();
        }
        return instance;
    }
}

关于java - 我是否正确使用 Java 中的静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29148226/

相关文章:

java - 如何通过选择文件夹而不是文件来使用 JFileChooser 获取目录路径

java - 对控制台输入(命令)使用react - 如何最有效地处理多个选项?

java - MyBatis 性能 - 访问映射器

java - 枚举对象应该是无状态的吗?

java - 如何访问对象的这个参数

c# - 注入(inject)依赖项的正确方法

python - 覆盖父类的方法

java - 如何调用在受 SSL 保护的服务器上运行的 API

javascript - ajax中的类型和方法有什么区别

Android - 从 Activity 调用普通对象方法