最终变量的可访问性

发布于 2024-08-17 22:41:27 字数 97 浏览 5 评论 0原文

为什么不能在静态变量中访问 Final 变量。 在编译时,它们只是简单地替换为直接替换为它们的值 所以,即使在静态方法中也应该允许它们使用,

为什么有这个限制???

Why can't Final variables be accessed in a static variables.
At the compile time they are simply substituted directly substituted with their values
so, they should be allowed to use even in static methods

why is this restriction???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月寒剑心 2024-08-24 22:41:27

静态 = 在类中。

Final = 不会改变它的值(但如果它不是静态的,它就是每个实例的值)。

例如,您可以这样做:

public class Weird
{
private static long number = System.getTimeInMilis();
private final long created = System.getTimeInMilis();
}

每次创建 Weird 对象时,它都会包含不同的创建值。

但 Weird.number 的值将是类加载的时间。

static = in the class.

final = doesn't change it's value (but it is of each instance if it's not static).

By examply you can do:

public class Weird
{
private static long number = System.getTimeInMilis();
private final long created = System.getTimeInMilis();
}

Each time you create a Weird object it will contain a different value for created.

But the value of Weird.number will be the time when the class was loaded.

你是年少的欢喜 2024-08-24 22:41:27

并非所有 final 变量都是编译时常量。只有静态最终变量可以被编译器替换为编译时常量。 final 修饰符在某些情况下仅用于确保 const-正确性。

并且静态方法无法访问非静态变量,因为这些变量对于同一类的不同实例可以具有不同的值。

Not all final variables are compile time constants. Only static final variables can be substituted by compiler as compile-time constants. final modifier in certain cases is only used to ensure const-correctness.

And static methods cannot access non-static variables as those variables can have different values for different instances of the same class.

半衾梦 2024-08-24 22:41:27

如果您问为什么 static 方法无法访问 final 实例变量(基于 [错误] 的假设,即最终成员变量始终设置为常量值代码),这是因为同一个 final 实例变量(例如可以通过构造函数设置)可以有不同的值。静态方法不知道类的任何特定实例,只能访问静态最终变量。

If you're asking why a static method cannot access a final instance variable (on the [incorrect] assumption that final member variables are always set to literal or constant values in the code), its because different instances of a class can have different values for the same final instance variable (which can be set, for example, via the constructor). A static method has no knowledge of any particular instance of the class, and could only access static final variables.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文