如果在函数调用时返回值的类不明显,如何避免返回对象?

时间:2017-05-08 17:30:38

标签: java methods return-type

对于我正在处理的项目,我必须从NoSQL数据库中检索一些条目。值可以是字符串或双精度数,但是,在调用检索这些值的方法时,我不知道该字段包含的值的类型。

为了争论,这里有一个最小的工作示例,当然是过分简化了:

public class ReturnType {


    public static void main(String[] args) {
        String s = "This is a string.";
        double d = 23.5;

        getValue(s);
        getValue(d);
    }

    private static Object getValue(Object obj) {
        return obj;
    }
}

我考虑过检查函数返回的对象的类,并将返回的对象强制转换为该类:

if (getValue(s).getClass() == String.class){
            String result = s;
        } else if (getValue(s).getClass() == double.class)
        {
            Double result = d;
        }

但是,我根本不喜欢这个解决方案,因为我必须将每个可能的返回类型硬编码到if或case语句中。

我还考虑过创建一个额外的方法,在调用检索值的方法之前检查类,并使用不同的返回类型的方法,具体取决于结果。但这看起来就像是同样的方法,虽然实施方式不同。

这个问题的最佳实践解决方案是什么?

0 个答案:

没有答案