java - 在 java 类的 main 方法中按名称访问和填充数组(通过成员函数创建)

标签 java arrays oop element

我有一个程序,我应该在其中创建一个类,该类具有一个成员函数,该函数创建不同简单数据类型的数组。我在 main 方法中实例化一个类,即创建该类的一个对象,并调用 createArray 方法。当我尝试使用 Arrays.fill(name,startIndex, endIndex, value) 填充具有相同类型数据的数组时,它找不到具有此类名称的数组。我想请问一下这是为什么?

import java.lang.reflect.Array;
import java.util.Arrays;

    public class MainClass {
      public void createArray(){
      int [] ints = new int[10];
      }
    }
    class Test{
        public static void main(String[] args) {
            MainClass mcl = new MainClass();
            mcl.createArray();
            for (int i = 0;i<10;i++){
                //cannot resolve symbol ints - why?
                Arrays.fill(ints,0,9,8);
            }
        }
    } 

最佳答案

您的代码存在一些问题,下面提供了更简单的版本:

public class MainClass {
  public void createArray(){
       //This lives only in here. It is not available outside.
       int [] ints = new int[10];
  }
}
class Test{
    public static void main(String[] args) {
        MainClass mcl = new MainClass();
        mcl.createArray();
        for (int i = 0;i<10;i++){
            //cannot resolve symbol ints - why?
            Arrays.fill(ints,0,9,8);
        }
    }
}

在您创建的代码中,ints 仅存在于 createArray 方法中。一旦执行跳出该方法,该数组就不再可用并被标记为垃圾回收。

要解决这个问题,您需要更改方法签名以返回一个int类型的数组(这样当您调用createArray 方法,此方法返回它创建的数组)。然后,您需要确保捕获主类中返回的数组。然后您就可以对其执行操作。

关于java - 在 java 类的 main 方法中按名称访问和填充数组(通过成员函数创建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57850411/

相关文章:

java - 子类中可访问的私有(private)字段

java - 在 CentOS 5.6 上编译 java 时出现问题

java - 使用 Java Stream 将参数从 map 方法添加到 foreach 方法

java - 在java中插入和反转数组中的元素

c - 初始化后的数组获得 BAD 值 [at C ]

jquery - 这些数组的正确名称

oop - 面向对象或模块化文件和数据 I/O 的技术?

c# - 具有返回修改后的父级的方法的设计模式

Java,Spring,记住我 Login.jsp 页面的选项?

java - boolean 字段上的 Aerospike 过滤器表达式不起作用