Java关于实例对象调用静态变量和静态方法问题

直接去看原文

原文链接:Java关于实例对象调用静态变量和静态方法问题_java对象可以调用static方法吗_骑个小蜗牛的博客-CSDN博客


实例对象到底能不能调用静态变量和静态方法?

网上众说纷纭,本文主要总结分析一下。

如果单从使用来说,Java是支持实例对象调用静态变量和静态方法的。

那就有人要说了,明明不可以呀,你看我使用IDEA通过实例对象调用静态变量和静态方法时,idea都不支持。

这里通过示例来说明:

测试类TestConst

public class TestConst {

    public static Integer a = 1;

    public static void haha() {
        System.out.println("haha");
    }
}

当你想通过实例对象调用静态变量和静态方法时,发现自动提示没有?

确实是的,但这就说明不支持实例对象调用静态变量和静态方法了吗,其实并不是的。

只是因为IDEA也不推荐你通过实例对象调用静态变量和静态方法,所以它的自动补全提示没有这个用法而已,但是你是可以手写调用的。

执行结果:

1
haha

显然IDEA是支持实例对象调用静态变量和静态方法的,只是它不建议你这么用。

在阿里巴巴Java开发规范中就有这么一条:

强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。

通过编译后的class文件可以发现

原来,实例对象调用静态变量和静态方法的写法,在编译后转换为了类直接调用静态变量或静态方法。

总结一下:

  1. 实例对象支持调用静态变量和静态方法,但并不推荐这么用;
  2. 通过实例对象支持调用静态变量和静态方法,最终都会在编译后转换为类直接调用静态变量或静态方法。
相关推荐
Swift社区1 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht1 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht1 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20241 小时前
Swift 数组
开发语言
吾日三省吾码2 小时前
JVM 性能调优
java
stm 学习ing2 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc3 小时前
《Python基础》之字符串格式化输出
开发语言·python
弗拉唐3 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi773 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器