日期:2014-05-20  浏览次数:20753 次

怎样使用泛型,根据条件,返回不同的类型?
大家好,怎样根据条件,返回不同的类型呢?比如,有一个方法伪代码如下:
Java code

public StringOrDate formatSome(isReturnDate)
{
     Date d = new Date();
     if(isReturnDate == true)
    {
        return d;
    }
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
    String str = sdf.format(d);
    return str;
}



我的需求是这样,如果传入的参数为true,则返回Date对象d;如果为false,则返回String对象。可能用泛型可以解决,怎么解决呢?

------解决方案--------------------
好像不可以啊~泛型最终调用的时候还是要确定类型的……一个函数怎么能返回不同的两种类型呢?
我觉得如果出现这样的情况,就可以考虑重新设计了
------解决方案--------------------
泛型也得你传一个类型给泛型才能确定泛型的类型嘛

比如
Java code
public <T> T dos(T a)
        {
            System.out.println(a);
            return a;
        }
        public static void main(String argv[])
        {
            Test t = new Test();
            t.dos("s");
        }

------解决方案--------------------
你干脆直接返回一个Object得了。。出来再转型
------解决方案--------------------
3楼的老兄说的有道理,你直接返回Object类型,然后用instanceof判断不行吗
------解决方案--------------------
你这样 泛型不可以解决的 。。。。
------解决方案--------------------
那是不可能的,Java 中的泛型需要在编译期确定类型,并不能在运行期确定。
------解决方案--------------------
我感觉也是,返回一个object类型多强,这样你可以返回你想要的每种类型!不过,在转化的过程可能回出现类型转化异常,不过都是小问题了!相信楼主能解决这点小异常
------解决方案--------------------
你这个代码完全可以啊
有什么问题啊?
泛型就是这么用的
------解决方案--------------------
完全没必要用泛型。 if(isReturnDate == true) -> if(isReturnDate)