我的问题很简单,但我想不出如何实现我想要的。
我希望实现一个方法,它依赖于给定的参数返回一个或另一个subClass (我知道我可以在某个类中使用这种行为,以使开发更加面向对象,但我仍然在学习)。
所以我想到了这个解决方案,但它没有编译。
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;
}发布于 2014-10-04 19:41:19
首先,您需要从类定义中删除方括号(()):
public abstract class A {
//some code
}
public class B extends A {
//some code
}
public class C extends A {
//some code
}第二,getObject应该只返回A
public static A getObject(String input){
if(input.indexOf("b") != -1){
return new B();
}
if(input.indexOf("c") != -1){
return new C();
}
return null;
}发布于 2014-10-04 19:40:27
在您的示例中,我认为没有必要使用泛型。您的方法可以简单地返回A:
public static A getObject(String input){
if(input.indexOf("b") != -1){
return new B();
}
if(input.indexOf("c") != -1){
return new C();
}
return null;
}https://stackoverflow.com/questions/26196444
复制相似问题