【发布时间】:2017-06-16 08:12:53
【问题描述】:
这可能是一个愚蠢的问题,但我在这里感到困惑。我有以下情况:
Main.java
public class Main {
public static void main (String args[]){
GenericTag[] arr = new GenericTag[2];
arr[0] = new Authentication("", "", "", "");
arr[1] = new Document("", "", "", "");
byte[] foo= Base64.decodeBase64(XmlBuilder.generate(arr));
System.out.println(new String(foo));
}
XmlBuilder.java
public final class XmlBuilder {
private static final String OPEN_TAG = "";
private static final String CLOSE_TAG = "";
public static byte[] generate(GenericTag[] tags){
String xml = OPEN_TAG;
for(int i=0; i<tags.length; i++){
xml += tags[i].xml;
}
xml += CLOSE_TAG;
return Base64.encodeBase64(xml.getBytes());
}
public interface GenericTag{
public String getXml();
}
public class Authentication implements GenericTag{
private static final String OPEN_TAG = "<authentication>";
private static final String CLOSE_TAG = "</autentication>";
//some tags
public Authentication (/*some parameters*/){
xml = OPEN_TAG;
//xml building
xml += CLOSE_TAG;
}
@Override
public String getXml() {
return xml;
}
}
public class Document implements GenericTag{
private static final String OPEN_TAG = "<document>";
private static final String CLOSE_TAG = "</document>";
//some tags
public String xml;
public Documento (/*some params*/){
xml = OPEN_TAG;
//xml building
xml += CLOSE_TAG;
}
@Override
public String getXml() {
return xml;
}
}
}
我无法让它工作。编译器说 Authentication 和 Document 都不能解析为一个类型。如果我明确声明 new XmlBuilder.Authentication 它会说
No enclosing instance of type XmlBuilder is accessible. Must qualify the allocation with an enclosing instance of type XmlBuilder (e.g. x.new A() where x is an instance of XmlBuilder).
我在这里做错了什么?
【问题讨论】:
-
您确定要将身份验证作为 XmlBuilder 的内部类吗?如果不是,您应该在自己的文件中声明每个接口/类。
-
是的,我知道将每个类放在自己的文件中可以解决所有问题,但在这种情况下,我希望将所有内容都放在一个类中。