What is unchecked cast and how do I check it?

后端 未结 3 484
不知归路
不知归路 2020-12-01 02:42

I think I get what unchecked cast means (casting from one to another of a different type), but what does it mean to \"Check\" the cast? How can I check the cast so that I ca

3条回答
  •  無奈伤痛
    2020-12-01 03:43

    To elaborate on what Peter wrote:

    Casts from non-generic types to generic types may work just fine at runtime, because the generic parameters are erased during compilation, so we are left with a legitimate cast. However, the code may fail later with an unexpected ClassCastException due to an incorrect assumption regarding the type parameter. For example:

        List l1 = new ArrayList();
        l1.add(33);
        List l2 = (List) l1;
        String s = l2.get(0);
    

    The unchecked warning at line 3 indicates that the compiler is not able to guarantee type safety, in the sense that an unexpected ClassCastException may occur at a later point. Indeed, this happens at line 4, which performs an implicit cast.

提交回复
热议问题