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、总结

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




  • 相关阅读:
    多个tomcat配置,解决冲突问题
    多态-重载和覆载
    静态成员、静态类和枚举
    重复使用类--继承和组合
    建立更可靠的OOP程序-类和成员的访问控制
    用ps画一个Gif的小房子(1)
    在h5页面上添加音乐播放
    使用Object类为实例定义方法和属性
    使用 prototype 定义方法和属性
    使用 this 关键字定义方法和属性
  • 原文地址:https://www.cnblogs.com/shengkejava/p/5988814.html
Copyright © 2011-2022 走看看