我是业余时间的Java开发者,我只是想知道
之间会有什么区别level.tick()
和
Level.tick(level)
('Level'是类的名称,'level'是该类的对象)
我知道因为java通过引用对象来工作,所以从类中传递静态函数作为参数传递水平肯定会与'level.tick()'具有相同的效果
(请注意,这不适用于我正在进行的项目,我以为我会问) )
答案 0 :(得分:1)
第一种方法将调用Level类的非静态函数,该函数不接受任何参数。 第二种方法将调用Level类的静态函数,该函数期望类型为Level的参数。
答案 1 :(得分:1)
两者都可以实现相同的功能。最常见的是使用第一个实例方法声明。但是,如果级别可以是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
可以免除很多麻烦。
答案 2 :(得分:0)
如果我理解正确,
我知道因为java通过引用对象来工作,所以从类中传递静态函数作为参数传递水平肯定会与'level.tick()'具有相同的效果
Level.tick(level)
不会自动转换为
level.tick()
只有当你有一个以第二种形式为主体的静态函数时,这才有效。