关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
三天前关门了。
改进这个问题
我们可以通过临时变量调用静态方法吗?
有一个aa级的
class AA {
static void test() {
}
}
class Main {
public static void main(String[] args) {
var aa = AA;
aa.test(); // Can we call static method via a temp vairble ?
}
}
为什么我要问这个问题?因为我必须在重构工作中将所有示例调用样式修改为类静态样式。这个方法以前是一个示例方法,使用一个局部变量来调用它,现在它变成了一个静态方法或类。所以我考虑是否有办法修改变量。也许这太天真了。
直接的,也许像这样,但不对。
Class<AA> aa = AA;
aa.test();
我知道用示例调用静态方法也不是好方法。
我们知道在Java8中有一种引用函数的方法。那么,还有其他更具元功能的类来引用一个literal类吗?
2条答案
按热度按时间cu6pst1q1#
我们可以通过临时变量调用静态方法吗?
是的,你可以(模块化编译错误!)
但你可能没有做你认为你在做的事情。这是个坏主意。
事实上,
aa.test()
其实和写作的意思完全一样Variable.test()
. 也就是说,价值aa
在确定调用哪个方法和调用method1时,将完全忽略它的实际类型。谁的班级
test()
方法被调用并解析为Variable
在编译时。java不支持重写或动态调度static
方法。1-jls声明计算引用的表达式被求值,但结果引用随后被丢弃。
调用
static
通过示例变量的方法是不好的样式,应该避免。考虑一下:
问:产量是多少?
a:输出为“aa”。
xuo3flqw2#
实际上,这不是如何从类中调用静态方法。
如果我们有aa级:
我们可以这样称呼测试方法:
不建议像这样从其示例调用静态方法: