是否可以在 Java 中使用变量属性名称?如果不是,为什么?

LOLWTFasdasd asdad

我想知道是否可以根据变量名称创建属性。更具体的请看下面的例子。

for(int i = 0; i < 10; i++){
    String number+i = i;
}

这意味着每个属性的基本名称“数字”都由它的值 i 扩展。因此,我可以例如执行以下操作(假设这些将被存储和访问,以及忽略属性/变量名称不应包含数字的事实,但您明白了):

System.out.println(number5); //You could do the same example with Strings and not numbers

显然,第一部分没有编译,但我认为这段摘录清楚地说明了我在问什么。是否有任何程序语言可以做到这一点?或者Java中有什么技巧可以使这成为可能?

然而,没有它背后的原因是什么?显然,如果这是可能的,一个属性可以存储两个变量值(属性的名称和值本身),这可能会导致混淆。但这是不拥有它的唯一原因还是还有其他原因?

普热米斯瓦夫·莫斯卡尔

我认为简单地创建变量名称int number+1 = 10, int number+2 = 20...是不可能的,因为如果您尝试将值分配number+1给另一个变量可能会太混乱看看这个:int another = number+1在这种情况下,编译器不知道是查找带有 name 的变量number并增加它还是查找带有 name 的变量number+1

但是反射为您提供了一些您想要实现的目标,但我建议简单地使用数组或 Map,这些选项看起来更清晰、更简单,我认为它们比使用反射为您提供了更多的安全性。无论如何,看看这个使用反射动态使用字段名称的简单示例(注意,在这种情况下,字段需要声明为公共):

public class Test {
    public int field1 = 1;
    public int field2 = 2;
    public int field3 = 3;
    // this method changes values assigned to field1, field2 and field3:
    public void setFields()
            throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
        for (int i = 1; i < 4; i++) {
            Test.class.getField("field" + i).set(this, 25); // Here is what you may be looking for, you dynamically find field1, field2, ...
        }
    }

    public static void main(String[] args)
            throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
        Test t = new Test();
        for (int i = 1; i < 4; i++) {
            int j = (Test.class.getField("field" + i).getInt(t)); // Another example
            System.out.print(j + " ");
        }
        t.setFields();
        for (int i = 1; i < 4; i++) {
            int j = (Test.class.getField("field" + i).getInt(t));
            System.out.print(j + " ");
        }
    }

}

执行此程序时获得的输出:

1 2 3 25 25 25

正如你看到的,改变分配给值时field1field2field3,并将它们打印到控制台的时候,我没有用他们的名字,我可以使用循环和字符串连接field用的指标i,我从有“for”循环。无论如何,在声明这些变量时,我不可能以任何其他方式写出它们的名字,而只能键入field1, etc...

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以覆盖 Java 中的变量?

来自分类Java

Java:是否可以在属性文件中换行?

来自分类Java

是否可以使用Java创建dll?

来自分类Java

为什么在Java中使用接口名称声明变量?

来自分类Java

是否可以在Java中使用bucket_script?

来自分类Java

是否可以在Flutter中使用Java或Kotlin代码?

来自分类Java

是否可以选择在Java中使用哪种替代方法?

来自分类Java

是否可以在Java中使用类似struct的结构?

来自分类Java

是否可以在Java 1.4的列表中使用泛型?

来自分类Java

是否可以在Java Android项目中使用Lua脚本?

来自分类Dev

是否可以在C,C ++中使用类似Java的同步语句?

来自分类Java

是否可以在java流的groupingBy中使用foreach?

来自分类Dev

是否可以从 Java 中使用基于 Node.JS 的模块?

来自分类Dev

是否可以在ISML表达式中使用Java枚举

来自分类Dev

是否可以在Java中定义一个变量并在JSP代码中使用该变量?

来自分类Dev

是否可以在 Sass 变量的定义中使用 CSS 自定义属性,如果可以,如何使用?

来自分类Dev

Mockito:Java-是否可以更改InjectMocks类中使用的变量值?

来自分类Java

是否可以在Gradle中声明一个可在Java中使用的变量?

来自分类Java

Java中的Lombok项目是如何工作的,是否可以在.net中使用属性?

来自分类Java

在Java 9中是否可以通过模块名称获得服务?

来自分类Java

是否可以在Java运行时获取对象的声明名称?

来自分类Java

是否可以从Java HTTPServletRequest检索表单名称?

来自分类Dev

是否可以用Java返回对象的名称?

来自分类Java

是否可以在Java中使父类泛型?

来自分类Java

是否可以在Java中使方法变为非虚拟方法?

来自分类Java

是否可以缩写java函数来删除变量?

来自分类Java

Java是否可以获取jButton的变量名?

来自分类Java

是否可以在Java中交换两个变量?

来自分类Java

是否可以在Java运行时创建变量?

Related 相关文章

  1. 1

    是否可以覆盖 Java 中的变量?

  2. 2

    Java:是否可以在属性文件中换行?

  3. 3

    是否可以使用Java创建dll?

  4. 4

    为什么在Java中使用接口名称声明变量?

  5. 5

    是否可以在Java中使用bucket_script?

  6. 6

    是否可以在Flutter中使用Java或Kotlin代码?

  7. 7

    是否可以选择在Java中使用哪种替代方法?

  8. 8

    是否可以在Java中使用类似struct的结构?

  9. 9

    是否可以在Java 1.4的列表中使用泛型?

  10. 10

    是否可以在Java Android项目中使用Lua脚本?

  11. 11

    是否可以在C,C ++中使用类似Java的同步语句?

  12. 12

    是否可以在java流的groupingBy中使用foreach?

  13. 13

    是否可以从 Java 中使用基于 Node.JS 的模块?

  14. 14

    是否可以在ISML表达式中使用Java枚举

  15. 15

    是否可以在Java中定义一个变量并在JSP代码中使用该变量?

  16. 16

    是否可以在 Sass 变量的定义中使用 CSS 自定义属性,如果可以,如何使用?

  17. 17

    Mockito:Java-是否可以更改InjectMocks类中使用的变量值?

  18. 18

    是否可以在Gradle中声明一个可在Java中使用的变量?

  19. 19

    Java中的Lombok项目是如何工作的,是否可以在.net中使用属性?

  20. 20

    在Java 9中是否可以通过模块名称获得服务?

  21. 21

    是否可以在Java运行时获取对象的声明名称?

  22. 22

    是否可以从Java HTTPServletRequest检索表单名称?

  23. 23

    是否可以用Java返回对象的名称?

  24. 24

    是否可以在Java中使父类泛型?

  25. 25

    是否可以在Java中使方法变为非虚拟方法?

  26. 26

    是否可以缩写java函数来删除变量?

  27. 27

    Java是否可以获取jButton的变量名?

  28. 28

    是否可以在Java中交换两个变量?

  29. 29

    是否可以在Java运行时创建变量?

热门标签

归档