【问题标题】:returning more than one type from a function based on condition in java [duplicate]根据java中的条件从函数返回多个类型[重复]
【发布时间】:2019-02-02 21:27:48
【问题描述】:

有没有办法根据java中的条件从函数中返回多个类型?

    /*here Object1 and Object2 are different objects created for 
    different classes*/
    public return_type function()
    {
        if(condition1)
            return Object1;
        else
            return Object2;
    }

【问题讨论】:

  • 您可以只提及对象类,以便返回任何对象。现在在它调用的这个函数中,您可以通过 instanceof 进行检查并走得更远。这可能会帮助你

标签: java


【解决方案1】:

你可以使用工厂模式。

https://www.tutorialspoint.com/design_pattern/factory_pattern.htm

您可以只返回 Object,因为在 Java 中它是其他类的基类。或者你可以有一个GeneralInterface,你的两个类都实现了它。或者它可以是一个基类。

class ObjectFactory {
     public GeneralInterface getObject() {
           //return object depending on your condition.
           if(condition1)
               return Object1;
           else
               return Object2;
     }
}

【讨论】:

    【解决方案2】:

    您应该使用 Object 类型,或者如果 Object1 和 Object2 扩展相同的类或实现相同的接口,您可以返回公共父级。在代码调用方法的第一种情况下,您可以使用 instanceof 运算符来确定返回的对象类型。

    【讨论】:

      【解决方案3】:

      如果两个对象都从第三个类扩展或实现一个接口是可能的

      interface DataInterface(){
        someMethodIfNeeded();
      }
      

      然后

      class Object1 implements DataInterface{...}
      

      但请记住,存在两个对象而不是一个对象是有原因的

      【讨论】:

        【解决方案4】:

        您可以创建方法返回类型Object。并在运行时检查它的返回类型和强制转换。

        public Object getValue(int i) {
            if (i == 1) return new Integer(1);
            else return new String("");
        }
        
        Object o = getValue(1);
        if (o.getClass().isAssignableFrom(Integer.class)) {
            int result = (int) o;
        } else if (o.getClass().isAssignableFrom(String.class)) {
            String result = (String) o;
        }
        

        【讨论】:

          猜你喜欢
          • 2019-09-28
          • 2016-05-02
          • 2016-01-28
          • 1970-01-01
          • 1970-01-01
          • 2019-09-02
          • 2012-04-02
          • 1970-01-01
          • 2011-04-19
          相关资源
          最近更新 更多