Java 为什么当我在Eclipse中提取一个方法时会得到这个奇怪的方法?

Java 为什么当我在Eclipse中提取一个方法时会得到这个奇怪的方法?,java,eclipse,Java,Eclipse,在我正在开发的pomodoro应用程序的主要方法中,我有以下代码: ActionListener a9 = new ActionListener(){ public void actionPerformed(ActionEvent evt){ DateFormat dateFormat = new SimpleDateFormat("HH:mm"); String currentTime = (String) dateFormat.for

在我正在开发的pomodoro应用程序的主要方法中,我有以下代码:

    ActionListener a9 = new ActionListener(){
        public void actionPerformed(ActionEvent evt){

        DateFormat dateFormat = new SimpleDateFormat("HH:mm");
        String currentTime = (String) dateFormat.format(new Date());

        combo2.append("You completed " + i + ""
        +  " pomodoros! At " + currentTime + " \n");
         Toolkit.getDefaultToolkit().beep();
        }
      };


    Timer newTimer = new Timer(500, a9);
    newTimer.start();
    newTimer.setRepeats(false);
但当我使用eclipse的“Extract Method”功能时,我得到的这一点超出了主要内容:

private static void generatePomodoro(final JTextArea combo2) {
    ActionListener a9 = new ActionListener(){
        public void actionPerformed(ActionEvent evt){

        DateFormat dateFormat = new SimpleDateFormat("HH:mm");
        String currentTime = (String) dateFormat.format(new Date());

        combo2.append("You completed " + i + ""
        +  " pomodoros! At " + currentTime + " \n");
         Toolkit.getDefaultToolkit().beep();
        }
      };

    Timer newTimer = new Timer(500, a9);
    newTimer.start();
    newTimer.setRepeats(false);
}
这不符合我的期望(也就是让我连续运行倒计时)在我看来真的很神秘。。签名是从哪里来的

private static void generatePomodoro(final JTextArea combo2)

感谢您的
main
方法具有签名
公共静态void main(String[]args)
,并且当您尝试使用
提取方法时,Eclipse保留必须保留新方法
static
,因此可以从
main
访问它。新函数也是私有的,因为重构之前的代码无论如何都无法从外部访问,而且保持函数私有是一个很好的做法。

您在Eclipse对话框中给新方法命名并设置了适当的修饰符,还是只接受了默认值?@PM77-1-我在对话框中输入了一个新名称,但除此之外,我接受任何违约。我想我过于希望它能做我想做的事情了提取一个方法不会改变代码行为,所以如果你的
计时器
部分之前是错误的,那么之后它会保持这种方式。@PM77-1-好的,明白了。是的,你说得对。非常感谢你!