首页 > 解决方案 > ClassCastException 预期但在代码运行时不会发生

问题描述

public class Node<T> {
    private  T     objReference;
    private Node<T> nextReference;

    public Node(Object ref) {
            objReference = (T) ref;
            nextReference =   null;

    }

    public Node() {
        objReference = null ;
        nextReference = null ;
    }

    public void assignNextReference(Node ref) {
        this.nextReference = ref;
    }

    public Node getNextReference() {
        return this.nextReference;
    }

    public T getObjReference() {
        return objReference ;
    }

    public void assignObjReference(Object ref) {
        try {
            objReference = (T) ref;

        } catch(ClassCastException e) {
            System.out.println(e);
        }
    }
}

我预计以下调用会引发 ClassCastException,但不会引发异常。

 Node<Integer> n = new Node<Integer>() ;
       
 n.assignObjReference(new String("String"));

当我们使用 Integer 作为类型参数时,assignObjectReference 方法会尝试将 String 引用转换为 Integer 类型参数。由于这是不可能的,我们应该得到一个 ClassCastException。我在这里想念什么?

标签: java

解决方案


推荐阅读