zoukankan      html  css  js  c++  java
  • Java Class.cast方法

    1、Java api

    public T cast(Object obj);

    Casts an object to the class or interface represented

    解释的比较笼统,意思就是将一个对象装换为类或者接口。

    2、代码示例

    /**
     * Created by shengke on 2016/10/22.
     */
    class A {
        public static void show() {
            System.out.println("Class A show() function");
        }
    }
    
    class B extends A {
        public static void show() {
            System.out.println("Class B show() function");
        }
    }
    
    public class TestCast {
    
        public static void main(String[] args) {
    
            TestCast cls = new TestCast();
            Class c = cls.getClass();
            System.out.println(c);
    
            Object obj = new A();
            B b1 = new B();
            b1.show();
    
            // casts object
            A a = new A();
            a = A.class.cast(b1);
    
            System.out.println(obj.getClass());
            System.out.println(b1.getClass());
            System.out.println(a.getClass());
        }
    }

    执行结果

    class com.scot.effective.genericity.TestCast
    Class B show() function
    class com.scot.effective.genericity.A
    class com.scot.effective.genericity.B
    class com.scot.effective.genericity.B  
    核心为:a = A.class.cast(b1); 把a转化为了B类型,此处容易产生把b1转成A类型误解。

    3、源码

        /**
         * Casts an object to the class or interface represented
         * by this {@code Class} object.
         *
         * @param obj the object to be cast
         * @return the object after casting, or null if obj is null
         *
         * @throws ClassCastException if the object is not
         * null and is not assignable to the type T.
         *
         * @since 1.5
         */
        public T cast(Object obj) {
            if (obj != null && !isInstance(obj))
                throw new ClassCastException(cannotCastMsg(obj));
            return (T) obj;
        }

    4、总结

    此方法只能转换当前类型或其子类下的对象,只是简单进行强转。




  • 相关阅读:
    bzoj1042: [HAOI2008]硬币购物(DP+容斥)
    bzoj3680: 吊打XXX(模拟退火)
    bzoj1867: [Noi1999]钉子和小球(DP)
    iOS怎样获取任何App的资源图片?
    iOS常用第三方库
    iOS应用上架报错解决
    iOS视频直播用到的协议
    iOS开发常用第三方框架
    iOS 打包Framework包含其他Framework的问题
    http和https的区别
  • 原文地址:https://www.cnblogs.com/shengkejava/p/5988814.html
Copyright © 2011-2022 走看看