Exception in thread "main" java.lang.ClassCastException: java.base/java.util.HashMap$Values cannot b...

 
    
//直接继承的才可以转型的观点是错误的,不好意思,误导了. 比如:
Collection<Integer> c = new ArrayList<>();
ArrayList<Integer> list = (ArrayList<Integer>) c;
// 继承关系:
// java.util.AbstractCollection<E>
// java.util.AbstractList<E>
// java.util.ArrayList<E
// 这个装换是没有问题的

Animal animal = new Dog();
Animal animal1 = new Cat();
Cat cat = (Cat)animal;
// Exception in thread "main" java.lang.ClassCastException: test.Dog cannot be cast to test.Cat

// 同样的例子 :
Collection<Integer> values = new HashMap<Integer,Integer>().values();
ArrayList<Integer> list1 =(ArrayList<Integer>) values;
//   输出:Exception in thread "main" java.lang.ClassCastException: java.base/java.util.HashMap$Values cannot be cast to java.base/java.util.ArrayList
//
//    大概意思就是 HashMap的内部类Values(狗)不能装换成 HashMap(猫)

 

 

源码:

 
public Collection<V> values() {
        Collection<V> vs = values;
        if (vs == null) {
            vs = new Values();
            values = vs;
        }
        return vs;
    }

final class Values extends AbstractCollection<V> {
        public final int size()                 { return size; }
        public final void clear()               { HashMap.this.clear(); }
        public final Iterator<V> iterator()     { return new ValueIterator(); }
        public final boolean contains(Object o) { return containsValue(o); }
        public final Spliterator<V> spliterator() {
            return new ValueSpliterator<>(HashMap.this, 0, -1, 0, 0);
        }
        public final void forEach(Consumer<? super V> action) {
            Node<K,V>[] tab;
            if (action == null)
                throw new NullPointerException();
            if (size > 0 && (tab = table) != null) {
                int mc = modCount;
                for (Node<K,V> e : tab) {
                    for (; e != null; e = e.next)
                        action.accept(e.value);
                }
                if (modCount != mc)
                    throw new ConcurrentModificationException();
            }
        }
    }
//解决你的问题//mljqqh/网/你 ///

  

转载于:https://www.cnblogs.com/mljqqh/p/9672200.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值