【问题标题】:Access List<List<String>> using this keyword [duplicate]使用此关键字访问 List<List<String>>
【发布时间】:2017-02-10 14:23:36
【问题描述】:

假设我通过 for 循环将值存储到列表 A、列表 B 和列表 C。 列表 A、B、C 值通过以下方式添加:

for (int j = 0; j <5; j++) 
{
   list_A.add("Value"+i);
   list_B.add("Value"+i);
   list_C.add("Value"+i);
}

通过以下方式从我使用 this 关键字的方法中访问列表:

private CharSequence ListA[]; // declaration    
this.ListA= list_A.toArray(new CharSequence[list_A.size()]); //accessing with this keyword

现在我通过以下方式将所有这些列表添加到另一个列表中

List<List<String>> finallist = new ArrayList<>();
finallist .add(list_A);
finallist .add(list_B);
finallist .add(list_C);

我进行了一些搜索,但找不到如何使用此关键字声明和访问 List>?

注意:这是我对here提出的问题的实际修改。由于我无法得到任何答案,我想我可以让它变得简单一些,并在这里提出了这个问题。

【问题讨论】:

  • 声明与this关键字无关,在这里使用它的地方是多余的。
  • 我将它用于片段。我已经在 SO stackoverflow.com/questions/42137823/… 中问过一个问题
  • '将其用于片段' 比问题的其余部分没有任何意义,这是重复的。不要那样做。

标签: java android list this


【解决方案1】:

您使用 this 关键字来访问类的当前实例的方法成员。您只能在函数内部执行此操作 - 因为在函数外部未定义 this 关键字。

通常您实际上并不使用 this.variable 或 this.method。如果覆盖范围内的另一个变量使用相同的名称,您只需要这样做。通常,您会在自动生成的 setter/constructors 中看到这一点,而在其他方面并不多见——只是不重用名称更容易。

【讨论】:

【解决方案2】:

您需要显示您的代码,因为在这种情况下范围确实很重要。是否需要 this 关键字很大程度上取决于声明的位置。

【讨论】:

    【解决方案3】:

    this.ListA 表示您要访问this 对象的字段ListA
    如果你在某个方法中声明一个变量为List&lt;List&lt;String&gt;&gt; finallist = new ArrayList&lt;&gt;();,那么它不是this对象的字段,你不能用this关键字访问它。如果要在方法之外访问它,则应将其声明为类字段。

    这是关于类、字段和this 的 Java 非常基础的东西。您应该学习 Java 非常基础的知识,以消除数百个这样的问题,您将在这些问题上浪费很多时间。不仅仅是学习基础知识。

    【讨论】:

      【解决方案4】:

      当访问另一个类的变量时,你可以这样做:

      主类

      public static final List<String> list_A = new ArrayList<>();
      static{
          for (int j = 0; j <5; j++) 
          {
              list_A.add("Value"+i);
          }
      }
      

      片段类

      CharSequence ListA[];
      ListA = MainClass.list_A.toArray(new CharSequence[MainClass.list_A.size()]);
      

      我建议在 list_A 的声明中使用 static 关键字

      【讨论】:

      • 有人打败了我。
      • 我需要将它用于片段。这里已经详细解释了:stackoverflow.com/questions/42137823/…
      • 我不明白为什么这些人只是说“你的问题很糟糕”而不是真正帮助你。
      • 我可以访问列表 A、B、C。但是如何访问我已将所有列表添加到该列表的最终列表?
      • 访问它。使用 MainClass.list_A/B/C 获取每个列表,然后将它们添加到 Fragment 中的列表中,或者在 MainClass 中创建 finallist 并以完全相同的方式访问它。
      猜你喜欢
      • 1970-01-01
      • 2022-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多