在不知道类名的情况下获取静态属性的值

拉尔斯·艾伯特(Lars Ebert)

假设我有一个抽象类Game

public abstract class Game
{
    public static final int FRAME_LENGTH = 40;

    public static int getFrameLength() {
        return Game.FRAME_LENGTH; //What do I have to replace Game with?
    }
}

还有App扩展的类Game

public class App extends Game
{
    private static final int FRAME_LENGTH = 50;
}

现在,App.main()执行该方法后,它会打印出来,正如40我所期望的那样50,因为App它覆盖了的值FRAME_LENGTH我猜我将不得不selfGame类中使用类似的东西,除了java没有self

我应该如何在App.FRAME_LENGTH不事先知道子类将被调用的情况下访问静态属性App

编辑

好吧,基于第一个答案,我认为我必须稍微说明一下我的问题。

首先,我将的范围更改FRAME_LENGTHpublic为了这个问题,这使事情变得更容易。其次,我更改了getFrameLength以前称为的方法main

我面临的问题:现在,我不知道哪些类将扩展GameGame也不应该知道。

如果您查看代码,将可以看到Game.FRAME_LENGTHis40App.FRAME_LENGTHis 50Game.getFrameLength()返回40预期的结果,但是App.getFrameLength()返回50,我希望(或者更希望它)返回50

我的问题现在非常简单:在上面的代码中,我必须更改为什么return Game.FRAME_LENGTH;,因此它返回正确的值(意味着FRAME_LENGTH调用该方法的类的),类似于self::$frameLengthPHP。

康斯坦丁·约夫科夫(Konstantin Yovkov)

你不能访问App.FRAME_LENGTH从主要方法varible,因为它被定义为privateApp类。

另外,您不会覆盖变量值(通过扩展类)。类继承与static成员无关


更新:

似乎您根本不​​需要static修饰符。您需要执行以下操作:

public abstract class Game {
    private final int FRAME_LENGTH = 40;

    public int getFrameLength() {
        return this.getValue();   //<-- Note the usage of the "this" keyword.
    }

    // Every subclass of Game must implement this method 
    // and return their specific FRAME_LENGTH value
    public abstract int getValue();  
}

通过使用this关键字,我们实际上是在调用该类当前实例(可以是子类)Game

现在,的示例子类Game可以提供的其他值FRAME_LENGTH

public class App extends Game {
    private final int FRAME_LENGTH = 50;

    @Override
    public int getValue() {
        return FRAME_LENGTH;
    }
}

现在,在调用时,new App().getFrameLength()您实际上将返回App#getValue()实现的结果,因此将收到50例如:

public static void main(String[] agrs) {
    System.out.println(new App().getFrameLength());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在不知道类名的情况下获取静态属性的值

来自分类Dev

在不知道类名的情况下创建函数

来自分类Dev

在不知道目标类型的情况下使用Expression获取属性值

来自分类Dev

在不知道类的情况下查询本体

来自分类Dev

如何在不知道类名的情况下使用NDB查询

来自分类Dev

PHP如何在不知道扩展名的情况下从URL获取图像

来自分类Dev

在不知道所有属性的情况下从HTML标记中获取文本

来自分类Dev

在不知道名称的情况下获取第一列的值

来自分类Dev

在不知道具体id的情况下获取data-*的值

来自分类Dev

在不知道扩展名的情况下获取文件扩展名,没有模式

来自分类Dev

Python Beautifulsoup:如何在不知道相应属性名称的情况下通过属性值查找标签?

来自分类Dev

如何在不知道 Javascript 中的 id 的情况下获取输入文本字段的值

来自分类Dev

如何在不知道按钮 ID/类或表单 ID/类的情况下提交表单?

来自分类Dev

在不知道这些属性名称的情况下访问对象的属性不起作用

来自分类Dev

如何在不知道索引值名称的情况下打印数组的值

来自分类Dev

如何在不知道索引值名称的情况下打印数组的值

来自分类Dev

在不知道类型的情况下将对象转换为通用类

来自分类Dev

在不知道类结构的情况下重载赋值运算符

来自分类Dev

如何在不知道div ID的情况下删除div的类?

来自分类Dev

msgpack:在不知道类型的情况下解压缩自定义类

来自分类Dev

如何在不知道div ID的情况下删除div的类?

来自分类Dev

在不知道Java中特定文件夹中的名称的情况下加载类

来自分类Dev

jQuery-在不知道名称的情况下按父类选择元素

来自分类Dev

如何在不知道bash扩展名的情况下提取各种zip文件

来自分类Dev

.htaccess在不知道扩展名的情况下重写为映像

来自分类Dev

在不知道文件名的情况下使用 Javascript Fetch API 读取文件

来自分类Dev

在不知道路径的情况下用Java写入属性文件

来自分类Dev

如何在不知道它是否为数组的情况下遍历JSON属性?

来自分类Dev

SQL代码在不知道属性的情况下检测两个表之间的更改

Related 相关文章

  1. 1

    在不知道类名的情况下获取静态属性的值

  2. 2

    在不知道类名的情况下创建函数

  3. 3

    在不知道目标类型的情况下使用Expression获取属性值

  4. 4

    在不知道类的情况下查询本体

  5. 5

    如何在不知道类名的情况下使用NDB查询

  6. 6

    PHP如何在不知道扩展名的情况下从URL获取图像

  7. 7

    在不知道所有属性的情况下从HTML标记中获取文本

  8. 8

    在不知道名称的情况下获取第一列的值

  9. 9

    在不知道具体id的情况下获取data-*的值

  10. 10

    在不知道扩展名的情况下获取文件扩展名,没有模式

  11. 11

    Python Beautifulsoup:如何在不知道相应属性名称的情况下通过属性值查找标签?

  12. 12

    如何在不知道 Javascript 中的 id 的情况下获取输入文本字段的值

  13. 13

    如何在不知道按钮 ID/类或表单 ID/类的情况下提交表单?

  14. 14

    在不知道这些属性名称的情况下访问对象的属性不起作用

  15. 15

    如何在不知道索引值名称的情况下打印数组的值

  16. 16

    如何在不知道索引值名称的情况下打印数组的值

  17. 17

    在不知道类型的情况下将对象转换为通用类

  18. 18

    在不知道类结构的情况下重载赋值运算符

  19. 19

    如何在不知道div ID的情况下删除div的类?

  20. 20

    msgpack:在不知道类型的情况下解压缩自定义类

  21. 21

    如何在不知道div ID的情况下删除div的类?

  22. 22

    在不知道Java中特定文件夹中的名称的情况下加载类

  23. 23

    jQuery-在不知道名称的情况下按父类选择元素

  24. 24

    如何在不知道bash扩展名的情况下提取各种zip文件

  25. 25

    .htaccess在不知道扩展名的情况下重写为映像

  26. 26

    在不知道文件名的情况下使用 Javascript Fetch API 读取文件

  27. 27

    在不知道路径的情况下用Java写入属性文件

  28. 28

    如何在不知道它是否为数组的情况下遍历JSON属性?

  29. 29

    SQL代码在不知道属性的情况下检测两个表之间的更改

热门标签

归档