栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

java为什么无法从静态环境引用非静态?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java为什么无法从静态环境引用非静态?

要了解原因,你必须了解两者之间的区别。

实例(非静态)方法适用于特定类型(类)的对象。这些是使用新的创建的,如下所示:

SomeClass myObject = new SomeClass();

要调用实例方法,请在实例(myObject)上调用它:

myObject.getText(...)

但是,只能直接在类型上调用静态方法/字段,如下所示: 前一条语句不正确。也可以使用诸如此类的对象引用来引用静态字段, myObject.staticMethod()但是不建议这样做,因为它并不清楚它们是类变量。

... = SomeClass.final

两者不能一起工作,因为它们在不同的数据空间(实例数据和类数据)上运行

让我尝试解释一下。考虑此类(伪代码):

class Test {     string somedata = "99";     string getText() { return somedata; }     static string TTT = "0";}

现在,我有以下用例:

Test item1 = new Test();item1.somedata = "200";Test item2 = new Test();Test.TTT = "1";

有什么价值?

in item1 TTT = 1 and somedata = 200in item2 TTT = 1 and somedata = 99

换句话说,TTT是该类型的所有实例共享的数据。所以说没有道理

class Test {         string somedata = "99";         string getText() { return somedata; }  static string TTT = getText(); // error there is is no somedata at this point}

所以问题是为什么TTT是静态的,或者为什么

getText()
不是静态的?

删除

static
,它应该会越过此错误-但在不了解你的类型的情况下,直到出现下一个错误,这只是粘贴膏药。有什么要求
getText()
,要求它成为非静态?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368795.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号