我在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
。
答案 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
构造函数:StreamSource
和String
。
我100%确定你没有为fileName
分配任何内容,而匿名类与它无关! :)
下次提供更多代码,至少包含所有变量的用例,以便更容易提供帮助。