大家好,怎样根据条件,返回不同的类型呢?比如,有一个方法伪代码如下:
- 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)