大家好,怎样根据条件,返回不同的类型呢?比如,有一个方法伪代码如下: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对象。可能用泛型可以解决,怎么解决呢?

解决方案 »

  1.   

    泛型也得你传一个类型给泛型才能确定泛型的类型嘛比如
                   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");
    }
      

  2.   

    你干脆直接返回一个Object得了。。出来再转型
      

  3.   

    3楼的老兄说的有道理,你直接返回Object类型,然后用instanceof判断不行吗
      

  4.   

    那是不可能的,Java 中的泛型需要在编译期确定类型,并不能在运行期确定。
      

  5.   

    我感觉也是,返回一个object类型多强,这样你可以返回你想要的每种类型!不过,在转化的过程可能回出现类型转化异常,不过都是小问题了!相信楼主能解决这点小异常
      

  6.   

    貌似泛型不行,按照2楼提示,作了下改动:public class TestReturnType { public <T> T dos(T a) {
    if (a instanceof Date) {
    System.out.println("--This is Date object---");
    System.out.println(a); }
    if (a instanceof String) {
    System.out.println("--This is String object---");
    System.out.println(a);
    }
    return a;
    } public static void main(String argv[]) {
    TestReturnType t = new TestReturnType();
    Date date = t.dos(new Date());  //return Date object
    String str = t.dos(t.formatMyDate());  //return String object } public String formatMyDate() {
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
    return sdf.format(date);
    }
    }
      

  7.   

    完全没必要用泛型。 if(isReturnDate == true) ->  if(isReturnDate)