【问题标题】:Grabbing different variable names with one line of code用一行代码获取不同的变量名
【发布时间】:2019-08-18 05:55:17
【问题描述】:

我正在尝试使用一行代码来获取任意数量的变量,以便无需添加大量代码即可轻松扩展。

p+(a+1).add(a) 的行是我特别关注的内容

public void arraylistvariables()
{
    ArrayList<String> p1 = new ArrayList<String>();
    ArrayList<String> p2 = new ArrayList<String>();

    int d = 0;
    for (int a = 0; a < 2; a++)
    {
        p+(a+1).add(a);
    }
}

我觉得它应该抓取每个单独的 ArrayList,但它返回一条错误消息,上面写着“不是语句”

【问题讨论】:

  • Java 等静态类型语言不允许访问变量名(这将是动态类型,相反)。改为使用列表列表来解决您的问题。
  • 或者可能使用具有可变数量参数的方法。 stackoverflow.com/questions/7607353/…

标签: java arraylist dynamic-variables


【解决方案1】:

Java 不支持动态检索变量名。使用列表或数组来保存您希望利用的实例。

【讨论】:

    【解决方案2】:

    您所问的问题在 Java 这样的静态类型语言中是不可能的。 a 是一个变量,因此编译器不能断言肯定存在一个名为p{a} 的变量。

    正在寻找的内容更符合动态语言的行为,尽管其中一些可能不允许您这样做。

    在 Java 中,执行此类操作的惯用方式可能是创建一个列表列表。首先,获取字符串列表,然后添加。我们回避了p1p2,它们现在只是列表列表中的元素。

    public void arraylistvariables()
    {
        List<List<String>> allTheLists = Arrays.asList(
            new ArrayList<>(),
            new ArrayList<>()
        );
    
        int d = 0;
        for (int a = 0; a < allTheLists.size(); a++)
        {
            allTheLists.get(a).add(Integer.toString(a));
        }
    }
    

    【讨论】:

      【解决方案3】:

      我不认为你想要做的事情是可以实现的,因为变量不像字符串,你不能连接变量。

      但是,这是一个可能的解决方案:

          ArrayList<String> p1 = new ArrayList<String>();
          ArrayList<String> p2 = new ArrayList<String>();
          ArrayList<ArrayList<String>> p = new ArrayList<>();
          p.add(p1);
          p.add(p2);
      
          for (int a = 0; a < 2; a++)
          {
              p.get(a).add(""+a);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-20
        • 2022-01-08
        • 2012-04-16
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        相关资源
        最近更新 更多