当前位置: 首页 > article >正文

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. 通过实例对象支持调用静态变量和静态方法,最终都会在编译后转换为类直接调用静态变量或静态方法。

http://www.kler.cn/a/106905.html

相关文章:

  • 软件工程笔记二—— 软件生存期模型
  • Prometheus面试内容整理-Exporters
  • CTFHub每日练习
  • 火车车厢重排问题,C++详解
  • Matplotlib库中show()函数的用法
  • C++算法练习-day40——617.合并二叉树
  • ue5 右击.uproject generator vs project file 错误
  • VM虚拟机的安装与配置及操作系统的安装
  • [RISC-V]verilog
  • DeepSpeed: 大模型训练框架 | 京东云技术团队
  • 【DOCKER】
  • 一个简单的注册页面,如有错误请指正(2.css)
  • “穷”用英语怎么说?柯桥成人英语培训
  • 数据结构与算法之排序: 归并排序 (Javascript版)
  • Jenkins入门级安装部署
  • 轻量封装WebGPU渲染系统示例<1>-彩色三角形(源码)
  • MySQL存储过程与函数
  • SOLIDWORKS® 2024 新功能 - SIMULATION
  • 人生岁月年华
  • Pytorch - 数据增广
  • Unity3D 如何用unity引擎然后用c#语言搭建自己的服务器
  • C# 基于腾讯云人脸核身和百度云证件识别技术相结合的 API 实现
  • ​ iOS自动混淆测试处理笔记
  • 干式电抗器的尺寸和重量对系统有什么影响?
  • Redis快速上手篇八(redission分布式锁)
  • AXI-Stream协议详解(3)—— AXI4-Stream IP核原理分析