代码:
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the BookName:");
String bookName = br.readLine();
System.out.println("Book Id is: " +bookInfo(bookName).getBookAvail().get(0).getBookID().toString());
System.out.println("Book Name is: " +bookInfo(bookName).getBookAvail().get(0).getBookName().toString());
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the StudentID:");
String studentID = br.readLine();
System.out.println("Student Information is: " +studentInfo(studentID));
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
private static ArrayOfBookAvail bookInfo(java.lang.String bookName) {
org.tempuri.BookService service = new org.tempuri.BookService();
org.tempuri.IBookService port = service.getBasicHttpBindingIBookService();
return port.bookInfo(bookName);
}
private static ArrayOfStudInfo studentInfo(java.lang.String studentID) {
org.tempuri.BookService service = new org.tempuri.BookService();
org.tempuri.IBookService port = service.getBasicHttpBindingIBookService();
return port.studentInfo(studentID);
}
}
我得到的输出是:
Enter the BookName:
Core Servlets and JavaServer Pages, Volume 2:Advanced Technologies
Book Id is: javax.xml.bind.JAXBElement@196da649
Enter the StudentID:
13MCAL058
Student Information is: org.datacontract.schemas._2004._07.lms.ArrayOfStudInfo@2b08bc5a
请帮助获得正确的输出。 提前谢谢。
答案 0 :(得分:0)
Book Id is: javax.xml.bind.JAXBElement@196da649
看起来bookInfo(bookName).getBookAvail().get(0).getBookID()
会返回JAXBElement
。您只需拨打getValue()
而不是toString()
即可获取该值。当您致电toString()
时,如果该类没有覆盖继承的toString()
的{{1}},那么将调用Object.class
,这是该内存的位置。对象
Object#toString()
假设该值只是一个原语或String,那么输出应该没问题。
bookInfo(bookName).getBookAvail().get(0).getBookID().getValue();
我不知道Student Information is:
org.datacontract.schemas._2004._07.lms.ArrayOfStudInfo@2b08bc5a
班是什么。但它似乎是同一个问题,其中调用ArrayOfStudInfo
来获取String表示。如果不了解Object#toString()
类的更多信息,假设它是您的类,您可以在该类中覆盖ArrayOfStudInfo
,以显示您想要成为字符串的内容表示。例如
toString()
现在我不知道这个班级是什么,我只是在那里抛出一个想法。如果你不能改变类,那么你总是可以通过从返回的对象中提取值来创建一个字符串。
从这一点来看,当你尝试在print语句中放入一个非原始对象时,它需要有一个String表示,由class ArrayOfStudInfo {
StudentInfo[] studentInfoArray;
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
for (StudentInfo info : studentInfoArray) {
builder.append(info.getFirstName())
.append(" ")
.append(info.getLastName())
.append("\n");
}
return builder.toString();
}
}
方法表示。