首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回subClass

返回subClass
EN

Stack Overflow用户
提问于 2014-10-04 19:37:37
回答 2查看 145关注 0票数 2

我的问题很简单,但我想不出如何实现我想要的。

我希望实现一个方法,它依赖于给定的参数返回一个或另一个subClass (我知道我可以在某个类中使用这种行为,以使开发更加面向对象,但我仍然在学习)。

所以我想到了这个解决方案,但它没有编译。

代码语言:javascript
复制
public abstract class A(){
    //some code
}

public class B extends A(){
    //some code
}

public class c extends A(){
    //some code
}

public static void main(String[] args) {
    System.out.println("input: "); 
    Scanner console = new Scanner(System.in); 
    String input=console.nextLine();
    A myObject = getObject(input);

}

public static <? extends A> getObject(String input){
    if(input.indexOf("b") != -1){
        return new B();
    }
    if(input.indexOf("c") != -1){
        return new C();     
    }
    return null;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-04 19:41:19

首先,您需要从类定义中删除方括号(()):

代码语言:javascript
复制
public abstract class A {
    //some code
}

public class B extends A {
    //some code
}

public class C extends A {
    //some code
}

第二,getObject应该只返回A

代码语言:javascript
复制
public static A getObject(String input){
    if(input.indexOf("b") != -1){
        return new B();
    }
    if(input.indexOf("c") != -1){
        return new C();
    }
    return null;
}
票数 2
EN

Stack Overflow用户

发布于 2014-10-04 19:40:27

在您的示例中,我认为没有必要使用泛型。您的方法可以简单地返回A

代码语言:javascript
复制
public static A getObject(String input){
    if(input.indexOf("b") != -1){
        return new B();
    }
    if(input.indexOf("c") != -1){
        return new C();     
    }
    return null;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26196444

复制
相关文章

相似问题

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