OkReflect 是一个封装了 Java 反射操作的工具。
// Java
String str = OkReflect.on("java.lang.String")
.create("Hello OkReflect")
.get();
// Kotlin
val str: String? = OkReflect.on("java.lang.String")
.create("test")
.get()
// Java
String str = OkReflect.on(String.class)
.create("test")
.get();
// Kotlin
val str: String? = OkReflect.on(String::class.java)
.create("test")
.get()
// Java
TestClass testClass = new TestClass("Alex");
String superName = OkReflect.on(SuperTestClass.class)
.with(testClass)
.get("superName");
// Kotlin
val testClass = TestClass("Alex")
val superName = OkReflect.on(SuperTestClass::class.java)
.with(testClass)
.get<String>("superName")
// Java
String str = OkReflect
.on(String.class)
.create("Hello world")
.call("substring", 6)
.get();
// Kotlin
val str = OkReflect
.on(String::class.java)
.create("Hello world")
.call("substring", 6)
.get<String?>()
// Java
TestClass instance = new TestClass();
String name = OkReflect.onInstance(instance)
.set("name", "Alex")
.get("name");
// Kotlin
val instance = TestClass()
val name = OkReflect.onInstance(instance)
.call("getName")
.get<String>("name")
// Java
String str = OkReflect
.on(String.class)
.create("Hello world")
.call("substring", 6)
.callWithResult("substring", 4)
.get();
// Kotlin
val str = OkReflect
.on(String::class.java)
.create("Hello world")
.call("substring", 6)
.callWithResult("substring", 4)
.get<String?>()
// Java
String str = OkReflect
.on(String.class)
.create("Hello world")
.call("substring", 6)
.getInstance();
// Kotlin
val str = OkReflect
.on(String::class.java)
.create("Hello world")
.call("substring", 6)
.getInstance<String>()
// Java
int i = OkReflect.on(TestClass.class)
.set("i", 6)
.get("i");
// Kotlin
val i = OkReflect.on(TestClass.class)
.set("i", 6)
.get<Int?>("i")
// Java
String finalField = OkReflect.on(TestClass.class)
.set("staticString", "changed")
.get("staticString");
// Kotlin
val finalField = OkReflect.on(TestClass.class)
.set("staticString", "changed")
.get<String?>("staticString")
// Java
String str = OkReflect
.on("java.lang.String")
.error(new OkReflect.OkReflectErrorCallback() {
@Override
public void onError(@NotNull Exception e) {
// 处理异常
}
})
.get();
// Kotlin
val str = OkReflect
.on("java.lang.String")
.error {
// 处理异常
}
.get<String>()
// Java
Class classes[] = {String.class, Byte.class};
Object args[] = {"Tom", null};
String name = OkReflect.on(TestClass.class)
.create()
.callWithClass("setData2", classes, args)
.get("name");
// Kotlin
val classes = arrayOf<Class<*>>(String::class.java, Byte::class.javaObjectType)
val args = arrayOf<Any?>("Tom", null)
val name = OkReflect.on(TestClass::class.java)
.create()
.callWithClass("setData2", classes, *args)
.get<String?>("name")
// Java
String name = OkReflect.on(TestClass.class)
.create()
.simpleCall("getName");
name = OkReflect.on(TestClass.class)
.create()
.simpleSet("name", "Tom");
// Kotlin
var name = OkReflect.on(TestClass::class.java)
.create()
.simpleCall<String>("getName")
name = OkReflect.on(TestClass::class.java)
.create()
.simpleSet<String>("name", "Tom")
// Java
OkReflect.on(TestClass.class)
.create()
.call("setName2", "Tom")
.async(result -> {
// handle the result
});
// Kotlin
OkReflect.on(TestClass::class.java)
.create()
.call("setName2", "Tom")
.callback<String> {
// handle the result
}
// Java
OkReflect.on(TestClass.class)
.create()
.call("setName2", "Tom")
.field("name")
.async(result -> {
// handle the result
});
// Kotlin
OkReflect.on(TestClass::class.java)
.create()
.call("setName2", "Tom")
.field("name")
.callback<String> {
// handle the result
}
// 首先声明接口
public interface StringProxy {
String substring(int beginIndex);
}
// Java
String substring = OkReflect.on("java.lang.String")
.create("Hello World")
.use(StringProxy.class)
.substring(6);
// Kotlin
val substring = OkReflect.on("java.lang.String")
.create("Hello World")
.use(StringProxy::class.java)
.substring(6)
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.zeshaoaaa:OkReflect:master-SNAPSHOT'
}
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.zeshaoaaa</groupId>
<artifactId>OkReflect</artifactId>
<version>master-SNAPSHOT</version>
</dependency>