You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java类调用与变量访问问题:实例调用报错但类直接访问正常

解决Java中实例访问类成员标红的问题

这问题我之前也碰到过,核心是你搞混了Java里静态成员和非静态成员的访问规则,咱们一步步理清楚:

问题根源

你能通过Questions.Score正常访问,但用实例QuestionBank.Score会标红,说明Score变量是被static关键字修饰的静态变量。静态变量属于类本身,而不是属于某个具体的实例对象,所以虽然Java语法上允许用实例访问静态成员,但IDE会标红警告(这是不符合代码规范的写法),而你遵循的操作说明应该是针对非静态成员的场景。

两种解决方案

方案1:改成非静态成员(符合你的操作说明)

如果你希望通过实例对象访问Score,那把Questions类里的Score变量的static修饰符去掉,让它变成非静态成员:

public class Questions {
    // 去掉static修饰符,变成非静态成员
    public int Score;
    // 其他成员...
}

这样在主类里实例化后,用QuestionBank.Score访问就不会标红了,完全符合操作说明的写法。

方案2:保持静态成员,规范访问方式

如果你确实需要Score是静态变量(比如用来记录全局共享的分数),那继续保留static修饰,但要改用类名直接访问,这是Java静态成员的规范写法:

// 规范写法:类名.静态成员
Questions.Score = 100;

此时IDE的标红是在提醒你不符合编码规范,你可以选择忽略这个警告,或者调整IDE的检查规则,但更推荐遵循规范用类名访问。

补充:静态vs非静态的核心区别

  • 静态成员(static):属于类,所有实例共享同一份内存,不需要实例化就能访问。
  • 非静态成员:属于实例对象,每个实例都有自己的一份,必须先创建实例才能访问。

内容的提问来源于stack exchange,提问作者sim2018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:00:25