匿名类如何传递本地参数?

时间:2017-04-03 06:23:04

标签: java java-8 vaadin anonymous-function

我在Vaadin中创建了一个StreamResource。如何将参数fileName传递给匿名类?我必须在内部类中设置fileName

这是源代码:

String fileName;

public void anotherMethod(){
    StreamResource myResource = createResource();
    fileDownloader = new FileDownloader(myResource);
}

private StreamResource createResource() {
    return new StreamResource(new StreamResource.StreamSource() {
        @Override
        public InputStream getStream() {
            ....
            //some magic with the filename here
        }
    }, fileName);
}        

我按NullPointerException获得fileName

1 个答案:

答案 0 :(得分:1)

在您的代码中,变量fileName未初始化,或者您未提供此段代码。尝试初始化它:

String fileName = "some file name";喜欢:

String fileName = "virus.bat";

public void anotherMethod(){
       StreamResource myResource = createResource();
        fileDownloader = new FileDownloader(myResource);
}
private StreamResource createResource() {
    final String URL = "someURL";

    return new StreamResource(new StreamResource.StreamSource() {
        @Override
        public InputStream getStream() {
              // USE THE URL.
        }
    }, fileName);
}

您不会将参数传递给匿名类,而是传递给具有两个参数的StreamResource构造函数:StreamSourceString

我100%确定你没有为fileName分配任何内容,而匿名类与它无关! :)

下次提供更多代码,至少包含所有变量的用例,以便更容易提供帮助。