我有两个类LoanBook & STLoanBook,STLoanBook是LoanBook的扩展。它们都在同一个数组中:
private static final LoanBook[] books = new LoanBook[50];
books[0] = new STLoanBook("B129", "Soil Mechanics", "Engineering");
books[1] = new LoanBook("B238", "Basic Biology", "Science");
books[2] = new LoanBook("B563", "Company Law", "Business");
books[3] = new STLoanBook("B342", "Cost Accounting", "Business");
books[4] = new LoanBook("B754", "Robotics", "Engineering");
我试图调用一个仅在STLoanBook中的函数备用(),当我通过一个for循环调用它时,它告诉我在检查LoanBook类时,reserve()并不存在。如何解决这个问题,因为循环已经检查了类SimpleName(),但它似乎仍然是错误的。帮助!
发布于 2014-09-22 17:02:04
您可以在for循环中使用instanceof
运算符和casting
。
for (LoanBook book : books) {
if (book instanceof STLoanBook) {
((STLoanBook)book).reserve();
}
}
发布于 2014-09-22 17:01:20
您可以通过在reserve()
中创建LoanBook方法来修复这个问题,如果这个方法不需要做任何事情,就可以在STLoanBook中扩展这个方法:
void reverse() {
return;
}
在LoanBook中。
发布于 2014-09-22 17:01:39
您需要instanceof
和一个演员:
for( book : books ) {
if( book instanceof STLoanBook ) {
((STLoanBook)book).reserve( );
}
}
https://stackoverflow.com/questions/25979298
复制相似问题