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. 通过实例对象支持调用静态变量和静态方法,最终都会在编译后转换为类直接调用静态变量或静态方法。
相关推荐
MediaTea21 分钟前
Python IDE:Spyder
开发语言·ide·python
不枯石1 小时前
Matlab通过GUI实现点云的均值滤波(附最简版)
开发语言·图像处理·算法·计算机视觉·matlab·均值算法
不枯石1 小时前
Matlab通过GUI实现点云的双边(Bilateral)滤波(附最简版)
开发语言·图像处理·算法·计算机视觉·matlab
ccccczy_1 小时前
Spring Security 深度解读:JWT 无状态认证与权限控制实现细节
java·spring security·jwt·authentication·authorization·securityfilterchain·onceperrequestfilter
Lin_Aries_04211 小时前
容器化 Tomcat 应用程序
java·linux·运维·docker·容器·tomcat
sheji34161 小时前
【开题答辩全过程】以 springboot高校社团管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
二十雨辰2 小时前
vite如何处理项目中的资源
开发语言·javascript
zzywxc7872 小时前
大模型落地实践指南:从技术路径到企业级解决方案
java·人工智能·python·microsoft·golang·prompt
相与还2 小时前
IDEA+SpringBoot实现远程DEBUG到本机
java·spring boot·intellij-idea
聆风吟º2 小时前
远程录制新体验:Bililive-go与cpolar的无缝协作
开发语言·后端·golang