zoukankan      html  css  js  c++  java
  • Java泛型类型擦除导致的类型转换问题

    初步结论:泛型类型转换不靠谱;

    源码:

    package com.srie.testjava;
    
    public class TestClassDefine4<T> {
    
        public static void main(String[] args) {
            TestClassDefine4<String> t4 = new TestClassDefine4<String>();
            String cast = t4.badCast(1);
            System.out.println(cast);
        }
    
        T badCast(Integer i) {
            return (T) i; // 此处有warning
        }
    }

    反编译:

    package com.srie.testjava;
    
    import java.io.PrintStream;
    
    public class TestClassDefine4<T>
    {
      public static void main(String[] args)
      {
        TestClassDefine4 t4 = new TestClassDefine4();
        String cast = (String)t4.badCast(Integer.valueOf(1));
        System.out.println(cast);
      }
    
      T badCast(Integer i) {
        return i;
      }
    }

    运行异常:

    Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
        at com.srie.testjava.TestClassDefine4.main(TestClassDefine4.java:7)
  • 相关阅读:
    SSL原理
    花不是玫瑰的全部
    sqlserver2008数据类型说明
    js识别半角字符的正则表达式
    js全角字符转半角字符
    java 全角字符转半角
    MySQL数据目录结构
    git使用
    [iOS]MVVM-框架介绍
    圆形进度条
  • 原文地址:https://www.cnblogs.com/stono/p/4812879.html
Copyright © 2011-2022 走看看