2

我是业余时间的 Java 开发人员,我只是想知道两者之间有什么区别

level.tick()

Level.tick(level)

('Level' 是类的名称,'level' 是该类的对象)

我知道,由于 java 通过引用对象来工作,因此从将级别作为参数传递的类调用静态函数肯定与“level.tick()”具有相同的效果

(请注意,这不适用于我正在从事的项目,我只是想问一下))

4

3 回答 3

1

第一个方法将调用不接受任何参数的 Level 类的非静态函数。第二种方法将调用 Level 类的静态函数,该函数需要一个 Level 类型的参数。

于 2013-01-10T07:57:13.753 回答
1

两者都可以实现相同的功能。最常见的是使用第一个实例方法声明。但是,如果 level can be null,那么您需要在该调用之前添加一个检查。第二个静态方法声明可以包括这种检查并减少您必须编写的样板文件。

public class Level {
  public void tick();
  public static void tick(Level level);
}

level.tick(); // Safe to call if level can't be null
Level.tick(level); // Safe to call in any case

设计应用程序以使变量值永远不会或仅在特殊情况下null可以使您免于很多麻烦。

于 2013-01-10T08:08:59.573 回答
0

如果我理解正确,

我知道,由于 java 通过引用对象来工作,因此从将级别作为参数传递的类调用静态函数肯定与“level.tick()”具有相同的效果

Level.tick(level) 

不会自动转换为

level.tick()

这只有在你有一个以第二种形式作为主体的静态函数时才有效。

于 2013-01-10T08:04:07.803 回答