Java反射调用kotlin中的类,Object类,Companion对象

Java反射调用kotlin中的类,Object类,Companion对象

1. Java反射调用kotlin中的普通类

kotlin普通类:

kotlin 复制代码
package com.common;
class TestNormal {
    fun get():String{
        return "Nolmal abc"
    }
    fun showNum(v:Int){
        println("Nolmal showNum:" + v)
    }
}

通过Java反射调用:

java 复制代码
public void testNormal() {
        try {
            Class c = Class.forName("com.common.TestNormal");
            Object ins = c.newInstance();
            System.out.println("object:" + ins);

            Method meth1 = c.getDeclaredMethod("get");
            Object r1 = meth1.invoke(ins);
            System.out.println("method1: " + meth1);
            System.out.println("r1:"+r1+", type: " + r1.getClass());

            Method meth2 = c.getDeclaredMethod("showNum", int.class);
            Object r2 = meth2.invoke(ins, 10086);
            System.out.println("meth2: " + meth2);
            System.out.println("r2: " + r2);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

2. Java反射调用kotlin中的Object类

kotlin普通类:

kotlin 复制代码
package com.common;
object TestRef {
    fun get():String{
        return "TestRef abc"
    }
    fun showNum(v:Int){
        println("TestRef showNum:" + v)
    }
}

通过Java反射调用:

java 复制代码
public void testObject() {
        try {
            Class c = Class.forName("com.common.TestRef");

            Field insField = c.getDeclaredField("INSTANCE");
            Object ins = insField.get(null);
            System.out.println("object:" + ins);

            Method meth1 = c.getDeclaredMethod("get");
            Object r1 = meth1.invoke(ins);
            System.out.println("method1: " + meth1);
            System.out.println("r1:"+r1+", type: " + r1.getClass());

            Method meth2 = c.getDeclaredMethod("showNum", int.class);
            Object r2 = meth2.invoke(ins, 10086);
            System.out.println("meth2: " + meth2);
            System.out.println("r2: " + r2);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

3. Java反射调用kotlin中的Companion对象

kotlin普通类:

kotlin 复制代码
package com.common;
class TestCom {
    companion object {
        fun get():String{
            return "TestCom abc"
        }
        fun showNum(v:Int){
            println("TestCom showNum:" + v)
        }
    }
}

通过Java反射调用:

java 复制代码
public void testCompanion() {
        try {
            Class c = Class.forName("com.common.TestCom$Companion");

            Object ins = Class.forName("com.common.TestCom").getField("Companion").get(null);

            Method meth1 = c.getDeclaredMethod("get");
            Object r1 = meth1.invoke(ins);
            System.out.println("method1: " + meth1);
            System.out.println("r1:"+r1+", type: " + r1.getClass());

            Method meth2 = c.getDeclaredMethod("showNum", int.class);
            Object r2 = meth2.invoke(ins, 10086);
            System.out.println("meth2: " + meth2);
            System.out.println("r2: " + r2);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
相关推荐
爱宇阳几秒前
Java Spring Boot 项目 Docker 容器化部署教程
java·spring boot·docker
Luo_xguan8 分钟前
一、Netty-高并发IO底层原理(5种主要的IO模型)
java·服务器·netty·nio
ACGkaka_12 分钟前
SpringBoot 实战(四十)集成 Statemachine
java·spring boot·后端
开开心心就好30 分钟前
电脑音质提升:杜比全景声安装详细教程
java·开发语言·前端·数据库·电脑·ruby·1024程序员节
yoi啃码磕了牙37 分钟前
Unity—Localization 多语言
java·数据库·mysql
跟着珅聪学java39 分钟前
在Java中判断Word文档中是否包含表格并读取表格内容,可以使用Apache POI库教程
java·开发语言·word
Kuo-Teng1 小时前
LeetCode 73: Set Matrix Zeroes
java·算法·leetcode·职场和发展
王元_SmallA1 小时前
服务器公网IP、私网IP、弹性IP是什么?区别与应
java·后端
葵续浅笑1 小时前
LeetCode - 杨辉三角 / 二叉树的最大深度
java·数据结构·算法·leetcode