Java:在类之间发送变量

时间:2016-02-25 13:46:54

标签: java

我有FileHandle类:

public class FileHandle {
public static String a;
public static String b;
public static String c;

public void openFile() throws FileNotFoundException {
    File dir = new File("C:/Folder/DB");
    if (dir.isDirectory()) {
        for (File file : dir.listFiles()) {
            Scanner s = new Scanner(file);
            //String f = file.getName();
           // System.out.println("File name:" + f );
            while (s.hasNext()) {
                a = s.next();
                b = s.next();
                c = s.next();
                System.out.printf("%s\n %s\n %s\n", a,b,c);
            }
        }
    }

和Constants类:

public class Constants {

 FileHandle h = new FileHandle();
public static final String[] LIST_DATA = {FileHandle.a,FileHandle.b,FileHandle.c};
public static final int NEW_ELEMENT_ID = 0;

}

主要问题:为什么在我的常量课程中我只获得最后扫描的文档信息。顺便提一下,想提一下FileHandle类扫描器工作正常,一切都很好。唯一真正的困难是将变量发送到Constants类,因为我提到我只获取最后扫描的文档信息。

1 个答案:

答案 0 :(得分:1)

不确定理解你的问题。但假设想要跟踪不同的呼叫,您可以:

  • 连接abc中的字符串:

            a = (a == null) ? s.next() : a + " " + s.next();
            b = (b == null) ? s.next() : b + " " + s.next();
            c = (c == null) ? s.next() : c + " " + s.next();
    
  • 制作abc列表:

    public static List<String> a = new ArrayList<String>;
    public static List<String> b = new ArrayList<String>;
    public static List<String> c = new ArrayList<String>;
    ...
            a.add(s.next());
            b.add(s.next());
            c.add(s.next());
    

因为静态值由同一个类的所有实例共享,所以当您指定它来覆盖所有以前的值时。

警告:上面没有使用同步,线程安全......