首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在同一数组Java中调用扩展类函数

在同一数组Java中调用扩展类函数
EN

Stack Overflow用户
提问于 2014-09-22 16:56:46
回答 5查看 65关注 0票数 1

我有两个类LoanBook & STLoanBook,STLoanBook是LoanBook的扩展。它们都在同一个数组中:

代码语言:javascript
代码运行次数:0
运行
复制
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(),但它似乎仍然是错误的。帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-22 17:02:04

您可以在for循环中使用instanceof运算符和casting

代码语言:javascript
代码运行次数:0
运行
复制
    for (LoanBook book : books) {
        if (book instanceof STLoanBook) {
            ((STLoanBook)book).reserve();
        }
    }
票数 2
EN

Stack Overflow用户

发布于 2014-09-22 17:01:20

您可以通过在reserve()中创建LoanBook方法来修复这个问题,如果这个方法不需要做任何事情,就可以在STLoanBook中扩展这个方法:

代码语言:javascript
代码运行次数:0
运行
复制
void reverse() {
    return;
}

在LoanBook中。

票数 0
EN

Stack Overflow用户

发布于 2014-09-22 17:01:39

您需要instanceof和一个演员:

代码语言:javascript
代码运行次数:0
运行
复制
for( book : books ) {
    if( book instanceof STLoanBook ) {
         ((STLoanBook)book).reserve( );
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25979298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档