使用实例转换类型

时间:2014-09-10 08:14:33

标签: java

错误: CAP#1不是新鲜的

代码:

public Boolean isAssigned(HttpServletRequest request, String name, Foo foo) {
    Boolean isAssigned = false;

    if ((foo.getClass()) request.getSession().getAttribute(name) != null) {
        isAssigned = true;
    }

    return isAssigned;
}

解决方案是什么?

2 个答案:

答案 0 :(得分:1)

可能不是你想要的,但它回答了标题中的问题。

Class<T>类有一个cast方法,可以将任何对象强制转换为自己的类型T。如果对象无法转换为该类型,显然会抛出ClassCastException

public <T> T castTo(Class<T> t, Object o) {
    return t.cast(o);
}

public <T> T castTo(T t, Object o) {
    return (T) castTo(t.getClass(), o);
}

public void test() {
    String s = "Hello";
    Object b = s;
    String c = castTo(String.class, b);
    String d = castTo("Some String", b);
}

答案 1 :(得分:-1)

如果你想测试是否

request.getSession().getAttribute(name)

属于Foo类型并在其上执行方法method之后您可以尝试使用instanceofcast

if (request.getSession().getAttribute(name) instanceof Foo) {
    ((Foo) request.getSession().getAttribute(name)).method();
}
相关问题