OkReflect is a library that trying to help you use Java Reflection APIs with ease.
// 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)
.set("superName", "Tom")
.get("superName");// Kotlin
val testClass = TestClass("Alex")
val superName: String? = OkReflect.on(SuperTestClass::class.java)
.with(testClass)
.set("Tom")
.get("superName")// Java
String str = OkReflect
.on(String.class)
.create("Hello world")
.call("substring", 6)
.get();// Kotlin
val str: String? = OkReflect
.on(String::class.java)
.create("Hello world")
.call("substring", 6)
.get()// Java
TestClass testClass = new TestClass();
String name = OkReflect.on(testClass)
.set("name", "Alex")
.get("name");// Kotlin
val testClass = TestClass()
val name: String? = OkReflect.on(testClass)
.call("getName")
.get("name")// Java
String str = OkReflect
.on(String.class)
.create("Hello world")
.call("substring", 6)
.callWithResult("substring", 4)
.get();// Kotlin
val str: String? = OkReflect
.on(String::class.java)
.create("Hello world")
.call("substring", 6)
.callWithResult("substring", 4)
.get()// Java
String str = OkReflect
.on(String.class)
.create("Hello world")
.call("substring", 6)
.getInstance();// Kotlin
val str: String? = OkReflect
.on(String::class.java)
.create("Hello world")
.call("substring", 6)
.getInstance()// Java
int i = OkReflect.on(TestClass.class)
.set("i", 6)
.get("i");// Kotlin
val i: Int? = OkReflect.on(TestClass.class)
.set("i", 6)
.get("i")// Java
String finalField = OkReflect.on("TestClass")
.set("staticString", "changed")
.get("staticString");// Kotlin
val finalField: String? = OkReflect.on("TestClass")
.set("staticString", "changed")
.get("staticString")// Java
String str = OkReflect
.on("java.lang.String")
.error(new OkReflect.OkReflectErrorCallback() {
@Override
public void onError(@NotNull Exception e) {
// handle the exception
}
})
.get();// Kotlin
val str: String? = OkReflect
.on("java.lang.String")
.error {
// handle the exception
}
.get()// 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("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
}// First step of using dynamic proxy: declare the interface
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>