[英]<identifier> expected error while creating object list
Can someone help me resolve this innocuous Identifier expected error? 有人可以帮我解决这个无害的标识符预期错误吗? I am declaring a Register class and trying to make a list of Register objects.
我正在声明一个Register类并尝试列出Register对象。
UPDATE : 'Register' is locally scoped in MySaxParser.java as Meesh suggested. 更新 :正如Meesh建议的那样,'Register'在MySaxParser.java中本地作用域。 But I still see identifier expected error.
但我仍然看到标识符预期错误。 The complete code and error message is below:
完整的代码和错误消息如下:
The issue was seen using java version "1.4.1_01" 使用java版“1.4.1_01”看到了这个问题
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class MySaxParser extends DefaultHandler {
List<Register> registerL;
String xmlFileName;
String tmpValue;
Register registerTmp;
public MySaxParser(String xmlFileName) {
this.xmlFileName = xmlFileName;
registerL = new ArrayList<Register>();
parseDocument();
printDatas();
}
private void parseDocument() {
// parse
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
parser.parse(xmlFileName, this);
} catch (ParserConfigurationException e) {
System.out.println("ParserConfig error");
} catch (SAXException e) {
System.out.println("SAXException : xml not well formed");
} catch (IOException e) {
System.out.println("IO error");
}
}
private void printDatas() {
// System.out.println(bookL.size());
for (Register tmpReg : registerL) {
System.out.println(tmpReg.toString());
}
}
@Override
public void startElement(String s, String s1, String elementName, Attributes attributes) throws SAXException {
// if current element is book , create new book
// clear tmpValue on start of element
if (elementName.equalsIgnoreCase("reg")) {
registerTmp = new Register();
registerTmp.setregName(attributes.getValue("regname"));
registerTmp.setaddr(attributes.getValue("addr"));
}
}
@Override
public void characters(char[] ac, int i, int j) throws SAXException {
tmpValue = new String(ac, i, j);
}
public static void main(String[] args) {
new MySaxParser("register.xml");
}
}
/*****
* Model class for Regsiter
* ****/
class Register {
String regName;
String addr;
//Setters
public void setregName(String regName ) { this.regName = regName; }
public void setaddr (String addr ) { this.addr = addr; }
//Getters
public String getregName() { return this.regName; }
public String getaddr() { return this.addr;}
}
ERROR: 错误:
MySaxParser.java:19: <identifier> expected
List<Register> registerL;
^
MySaxParser.java:26: '(' or '[' expected
registerL = new ArrayList<Register>();
^
MySaxParser.java:46: ';' expected
for (Register tmpReg : registerL) {
^
MySaxParser.java:49: illegal start of expression
}
^
MySaxParser.java:48: ';' expected
}
^
MySaxParser.java:50: illegal character: \64
@Override
^
MySaxParser.java:62: illegal character: \64
@Override
^
MySaxParser.java:68: <identifier> expected
}
^
MySaxParser.java:26: cannot resolve symbol
symbol : variable registerL
location: class MySaxParser
registerL = new ArrayList<Register>();
^
9 errors
java version "1.4.1_01"
List<Register> registerL;
That is a really old Java version. 这是一个非常古老的Java版本。 Generics have been introduced in Java5, so in order to use "modern" Java, you need to update to a newer version.
Java5中引入了泛型,因此为了使用“现代”Java,您需要更新到更新的版本。
If both Register
and MySaxParser
are public classes (meaning that they can be used by other classes), they both need to be in a file of their own. 如果
Register
和MySaxParser
都是公共类(意味着它们可以被其他类使用),则它们都需要位于自己的文件中。 If not, you can make Register
locally scoped, and access it only in MySaxParser
. 如果没有,您可以在本地作用域
Register
,并仅在MySaxParser
访问它。 For example (details omitted for brevity): 例如(为简洁起见省略细节):
public class MySaxParser {
List<Register> registers;
}
class Register {
String value;
}
Also, see @Thilo's comment above. 另外,请参阅@ Thilo上面的评论。 You may need to change your use of generics depending on which JRE/JDK you're using.
您可能需要根据您使用的JRE / JDK更改泛型的使用。
It may be compilation error. 它可能是编译错误。 So, you need to write these two class within same package.
所以,你需要在同一个包中编写这两个类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.