Java 如何在两个类之间选择返回一个类?

Java 如何在两个类之间选择返回一个类?,java,class,return,Java,Class,Return,我想知道是否有可能有一个方法可以在多个类之间进行选择并返回其中一个类 它应该是这样的: public class BotManager { public static Test test; public static int PROTOCOL_VERSION = 114; public Bot bot(){ if(PROTOCOL_VERSION == 114){ return test.bot114; }else{ return test.bo

我想知道是否有可能有一个方法可以在多个类之间进行选择并返回其中一个类

它应该是这样的:

public class BotManager {
public static Test test;
public static int PROTOCOL_VERSION = 114;

public Bot bot(){
    if(PROTOCOL_VERSION == 114){
        return test.bot114;
    }else{
        return test.bot111;
    }
}
在本例中,bot111和bot114是不同的类

bot.version111.bot.bot


bot.version114.bot.bot

当然可以。
您只需要确保
bot114
bot111
都扩展了
Bot

出于这些目的,您可以使用所谓的工厂,下面是一个工厂示例,它根据类类型返回不同的窗口:

公共静态窗口getCsvExportWindow(类选项卡){
if(tab==OnhandTab.class){
返回新的OnhandCsvExportWindow();
}否则{
返回新的customOrderCsvExportWindow();
}
}
您可以使用协议版本而不是类类型。

您可以使用它的代码:

if (Object object instanceof Bot114) {
  return new Bot114();
} else if (Object object instanceof Bot111) {
  return new Bot111();
} else {
  return null;
}

如果两个返回的类没有任何共同点,那么该方法的调用方应该如何以有意义的方式使用结果?我想您应该阅读关于这两个类都不是类,而是不同类的实例。。因此,它们必须实现相同的接口或扩展相同的类。(或者方法的返回类型必须是
Object
,这通常不是很有用)
Bot114的Object-Object实例没有任何意义。返回
null
是一种不好的做法。方法的返回类型是什么?调用方应该如何调用它并使用结果?这并不能解决问题(例如,类是通过
PROTOCOL\u VERSION
的值来选择的),而是通过它们都是
Bot
,但来自不同的包:
Bot.version111.Bot.Bot
Bot.version114.Bot.Bot