反射

获取有参构造和无参构造

基础类

public class Rat {

    public Rat(){
        go();
    }

    public Rat(int count){
        go(count);
    }

    private void go(int count) {
        Log.i("Rat","hello,你走了有参构造,小白鼠一共"+count+"只");
    }

    private void go() {
        Log.i("Rat","hello,你走了无参构造");
    }
}

实现:

        var rat:Rat? = null
        try {
            val clazz: Class<Rat> = Class.forName("com.yirong.myapplication.Rat") as Class<Rat>
//            rat = clazz.getDeclaredConstructor().newInstance()//获取无参构造
            rat = clazz.getDeclaredConstructor(Int::class.java).newInstance(27)//获取有参构造

        }catch (e: ClassNotFoundException){
            if (Log.isLoggable(TAG, Log.WARN)) {
                Log.w(
                    TAG, "ClassNotFound"
                )
            }
        } catch (e: InstantiationException) {
            Log.w(
                TAG, "InstantiationException"
            )
        } catch (e: IllegalAccessException) {
            Log.w(
                TAG, "IllegalAccessException"
            )
        } catch (e: NoSuchMethodException) {
            Log.w(
                TAG, "NoSuchMethodException"
            )
        } catch (e: InvocationTargetException) {
            Log.w(
                TAG, "InvocationTargetException"
            )
        }

查看日志

10:39:28.206 2207-2207/? I/Rat: hello,你走了无参构造
10:39:28.206 2207-2207/? I/Rat: hello,你走了有参构造,小白鼠一共27只
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (转自csdn) 反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示...
    尼尔君阅读 239评论 0 1
  • 课程地址:Java基础之 — 反射(非常重要) (使用的前提条件:必须先得到代表的字节码的Class,Cla...
    叨唧唧的阅读 700评论 0 2
  • 反射总结慕课网 反射的视频 什么是反射 反射是能够让java代码访问一个已经加载的类的字段,变量,方法和构造器等信...
    付小影子阅读 875评论 0 2
  • 之前就发现这个问题:gulp-sass一直很安装失败,查资料后发现大家都说是node版本太高等的问题,我觉得不对劲...
    迷糊的呆呆阅读 937评论 0 1
  • 欢乐的六一 六月,小鸟在前面带路,风吹向我们。我们像春天一样来到学校。 教室被气球点缀的五彩斑斓,老师拿着...
    我上三年级阅读 195评论 0 0