Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问其他类中的每个循环变量_Java - Fatal编程技术网

Java 如何访问其他类中的每个循环变量

Java 如何访问其他类中的每个循环变量,java,Java,我是java的新手。我正在学习使用for-each循环在arraylist上进行迭代 for(String s:list){ my code } 我想访问同一个包的另一个类中的变量s。事件使方法静态后,我无法执行此操作 我还尝试初始化变量,如下所示: static String s=null; for(s:list){ my code } 此代码也不起作用。请帮助我了解访问另一个类中变量“s”的正确方法如果要将该变量传递给另一个类,请将该变量作为一个变量传

我是java的新手。我正在学习使用for-each循环在arraylist上进行迭代

  for(String s:list){
my code
}
我想访问同一个包的另一个类中的变量s。事件使方法静态后,我无法执行此操作

我还尝试初始化变量,如下所示:

      static String s=null;

    for(s:list){
    my code

}

此代码也不起作用。请帮助我了解访问另一个类中变量“s”的正确方法

如果要将该变量传递给另一个类,请将该变量作为一个变量传递给该类的方法

例如:-


要从另一个类实例访问字段,需要一个存储该类实例的变量,并使用varName.fieldName访问公共字段


如果字段是类的静态成员,只需写ClassName.fieldName即可。您的公共/静态解决方案的方向错误。在类级别公开局部变量以使其可用于单个其他对象类将减少类提供的封装,这是不好的

这里的解决方案是通过方法调用传递变量:

public class ListProcessor {

    private StringProcessor stringProcessor;

    public ListProcessor() {
        stringProcessor = new StringProcessor();
    }

    public process(List<String> values) {
        for(String value : values){
            stringProcessor.process(value);
        }
    }
}

public class StringProcessor {
    public process(String value) {
        System.out.printf("Processing: %s%n", value);
    }
}

还可以通过使计数器非私有或通过getter从另一个类访问计数器的当前值。但是,正如所指出的,这不是一个好的实践。

在java中的for-each循环中,您正在创建临时变量

for (String s:list) {
  System.out.println(s);
}
这是:

for (int i = 0; i < list.size(); i++) {
  String s = list.get(i);
  System.out.println(s);
}
如果您只需要这一个位置来访问函数外部的列表元素,则可以将类变量设为静态变量,例如,当您不经常更新此列表并且该列表在类的所有实例之间共享时。在这种情况下,您可以通过键入

MyClass.classVariableList

然后只需将其作为另一个类的methodi的参数发送,这是比公开的更好的选择。通过公共字段公开对象数据不是一个好主意。ThisClass->StringListProcessor@SteveSmithtnx,重命名blooper!:-D
for (String s:list) {
  System.out.println(s);
}
for (int i = 0; i < list.size(); i++) {
  String s = list.get(i);
  System.out.println(s);
}
class MyClass {
ArrayList<String> classVariableList;

function myFunction() {
  //your list was created here
  classVariableList = list;
  for (String s:list) {
    //your code
  }
}
instanceOfMayClass.classVariableList
MyClass.classVariableList