2012-02-26 68 views
1

背景:未找到变量。引用另一个类的对象

我正在并发服务器上创建一个基本的下载中心。

我下一个主要的方法创建在Server class文件对象

File[] files = { 
    new File("1. Program", "myProgram.jar"), 
    new File("2. Image", "myPicture.jpg"), 
    new File("3. Book", "myBook.txt")}; 

此引用到File class,我创建的构造函数和getter。

class File { 

    private String option; 
    private String fileName; 


    public File(String option, String fileName) { 
     this.option = option; 
     this.fileName= fileName; 
    } 

    public String getOption() { 
     return option; 
    } 


    public String getFileName() { 
     return fileName; 
    } 

    public void getFileOptions(File[] files) { 
     for (File f : files) { 
      System.out.printf("The option is %s\n", f.getOption()); 
     } 
    } 
} 

我试图从我的ServerState class调用getFileOptions方法。

theOutput= File.getFileOptions(files); 

输出是返回给客户端的字符串。

我的IDE说(files)无法找到。任何想法,我要去错了吗?凸轮我不把结果返回到最初没有创建对象的类中?

+0

我不明白这个问题。你是否想引用来自不同类的'文件'?因为如果它没有被声明为静态的,你就无法做到这一点。 – Jivings 2012-02-26 21:02:12

+0

比这更糟,Jivings。如果这是问题,他会想知道为什么'Server.files'失败。某种程度上,这是令人印象深刻的。 – 2012-02-26 21:04:53

+0

显示您将呼叫置于'getFileOptions'的位置。对于初学者来说,如果这是在你的'ServerState'类,你需要用'File'的实例调用'getFileOptions',或'getFileOptions'需要是静态的。 – 2012-02-26 21:12:54

回答

1

行,所以我提出File对象到ServerState class并通过调用从File class也含有该对象的构造函数,getter和setter方法toString()方法访问使用String theOutput = files[0].toString() + files[1].toString() + files[2].toString();的选项。

-2

您在一个类的一个方法中定义的files与您试图在另一个类的另一个方法中引用的files完全无关。否则,你不觉得你的使用会与另一个程序员之前在SDK中使用该变量的某个地方发生冲突吗?或者你已经被告知只能使用像myNameThisClassFiles这样的'安全'名字?

反正a tutorial

+0

文盲:被其他答案纠正的问题只是OP的问题之一,而且比我在这里纠正的问题要少得多 - 这也是明确提出的问题。但是如果你们中的另一个人低估了这个答案,我可以洗手的OP并获得一个徽章。 – 2012-02-27 08:14:50

1

好了,你在这里提到的3类

服务器(主)类,它有一个文件变量,它是File对象的数组。

文件,该文件是你的对象类。

而且ServerState类,这是,你正在尝试做的:

theOutput= File.getFileOptions(files); 

是否正确?

不能在服务器中创建类的对象,除非你传递一个参考吧什么的,在这种情况下,我们需要更多的情况下在你的榜样,以帮助您使用它在ServerState类。阅读上面发布的示波器教程可能是一个好主意。

+0

是的,这是正确的。将有一个阅读 – keenProgrammer 2012-02-26 21:41:25

相关问题