我有一个函数,我需要它有两个返回值,一个是boolean类型,一个是double类型,我为了获得这两个值,使用:Object[] result = new Object[] {true, 56.00};
return result;
这种方法。
为了读取这两个值,我使用:Object[] result = calculation (x1, x2);
boolean judge = (boolean)result[0];
double value = (double)result[1];
我经过试验,上述方法确实可以行得通,请问这种方法有什么缺点?还有更好的方法吗?

解决方案 »

  1.   

    坏处就是你就是要关注其中的类型,而且难以服用
    可以用泛型public class TwoTuple<A,B> {
    public final A first;
    public final B second;
    public TwoTuple(A  a,B b){
    first=a;
    second=b;
    }
    public String toString(){
    return ")"+first+", " +second+")";
    }
    public static void main(String[] args){
    TwoTuple two=new TwoTuple(true,56.00);
    System.out.println(two.first+"\n"+two.second);

    }
      

  2.   

    sorry,main函数里面错了
    public static void main(String[] args){
    TwoTuple<Boolean,Double> two=new TwoTuple<Boolean,Double>(true,56.00);
    Boolean bo=two.first;
    Double st=two.second;

    }这样放进去的时候就告诉编译器你放进去的是什么类型,取出的时候就自动知道是什么类型,无需强制转型。不会出现类型上的错误了
      

  3.   

    这个时候就知道Java的不好了吧
      

  4.   

    2楼正解,可以用泛型
    还有一种解法 将得到的两个返回值放到StringBuffer来拼接“boolean:double,”
    取返回值是解析这个String就行
      

  5.   

    除了javabean还可以考虑JSON字符串^_^
      

  6.   

    public class commonResult{
        private boolean status;
        private Object value;
        private String msg;
    }
      

  7.   

     c 语言里面的话可以用结构体,面向对象里面只有 class 。所以可以用一个类存储两个值,返回 class 
      

  8.   

    那这样的话,这个函数是不是必须是TwoTuole类的方法才可以啊?还有可不可以返回3个值、4个值,甚至更多?
      

  9.   


    这就是一个Value Object 模式,用法911童鞋写的很清楚了。
    刚google了一把,好多介绍,楼主自己看吧
      

  10.   

    java似乎没有提供直接的语法支持。不过这种情况下,一般应该用实例封装状态,即函数的返回值。题外话是:像boolean和double这种东西,在更彻底的OO理论中是不应该存在的。语言支持它们,在于为工作提供方便,但至少不能滥用吧。楼主这种情况,我得理解就是滥用了。
      

  11.   

    public final A first;
    public final B second;有问题吧