使用对象类型作为方法的输入

时间:2015-05-07 17:18:58

标签: java reflection casting

我有一个设置类,用于存储数据的Object。有没有办法让一个方法返回指定的对象类型/类中的数据?例如

public objType getData(ObjType objType) {
    objType out = (objType) data;
    return out;
}

2 个答案:

答案 0 :(得分:2)

使用Class<YourClass>.cast

方法可能是这样的(在这段代码示例中避免例外):

public <T> T getData(Class<T> clazz) {
    return clazz.cast(data);
}

答案 1 :(得分:1)

  

我有一个设置类,用于存储数据的Object

如果您有选择,请考虑不要这样做。相反,也许你可以参数化你的类:

public class YourClass<T> {
    private T data;

    public void setData(T d) {
        this.data = d;
    }

    public T getData() {
        return this.data;
    }
}

然后有人使用你的课程来讲故事Thingy实例会像这样使用它:

YourClass<Thingy> yc = new YourClass<>();
yc.setData(new Thingy());
Thingy t = yc.getData();

如果你有选择权,那么施放是(遥远的)第二好的选择; Luiggi has you covered