当前位置: 代码迷 >> J2SE >> 怎的使用泛型,根据条件,返回不同的类型
  详细解决方案

怎的使用泛型,根据条件,返回不同的类型

热度:142   发布时间:2016-04-24 12:29:38.0
怎样使用泛型,根据条件,返回不同的类型?
大家好,怎样根据条件,返回不同的类型呢?比如,有一个方法伪代码如下:
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)
  相关解决方案