mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
...
This commit is contained in:
@@ -28,9 +28,12 @@
|
||||
package com.highcapable.yukihookapi.hook.bean
|
||||
|
||||
/**
|
||||
* 自适应异常 [Class] 接管类
|
||||
* 创建一个当前 Hook 的 [Class] 接管类
|
||||
* @param instance 实例
|
||||
* @param name 完整名称
|
||||
* @param throwable 异常
|
||||
*/
|
||||
class HookClass(var instance: Class<*>? = null, var name: String, var throwable: Throwable? = null)
|
||||
class HookClass(var instance: Class<*>? = null, var name: String, var throwable: Throwable? = null) {
|
||||
|
||||
override fun toString() = "[class] $name [throwable] $throwable [instance] $instance"
|
||||
}
|
@@ -48,6 +48,13 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
|
||||
/** 当前找到的 [Field] */
|
||||
private var fieldInstance: Field? = null
|
||||
|
||||
/**
|
||||
* [Field] 所在的 [Class]
|
||||
*
|
||||
* 不填默认为当前的 [hookClass]
|
||||
*/
|
||||
var classSet = hookClass
|
||||
|
||||
/**
|
||||
* [Field] 名称
|
||||
*
|
||||
@@ -70,19 +77,26 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
|
||||
* @throws IllegalStateException 如果 [name] 没有被设置
|
||||
*/
|
||||
@DoNotUseMethod
|
||||
fun build() = if (name.isBlank()) {
|
||||
loggerE(msg = "Field name cannot be empty in Class [$hookClass] [${hookInstance.tag}]")
|
||||
Result(isNoSuch = true)
|
||||
} else try {
|
||||
runBlocking {
|
||||
fieldInstance = ReflectionUtils.findFieldIfExists(hookClass, type?.name, name)
|
||||
}.result {
|
||||
hookInstance.onHookLogMsg(msg = "Find Field [${fieldInstance}] takes ${it}ms [${hookInstance.tag}]")
|
||||
fun build() = when {
|
||||
name.isBlank() -> {
|
||||
loggerE(msg = "Field name cannot be empty in Class [$classSet] [${hookInstance.tag}]")
|
||||
Result(isNoSuch = true)
|
||||
}
|
||||
type == null -> {
|
||||
loggerE(msg = "Field type cannot be null in Class [$classSet] [${hookInstance.tag}]")
|
||||
Result(isNoSuch = true)
|
||||
}
|
||||
else -> try {
|
||||
runBlocking {
|
||||
fieldInstance = ReflectionUtils.findFieldIfExists(classSet, type?.name, name)
|
||||
}.result {
|
||||
hookInstance.onHookLogMsg(msg = "Find Field [${fieldInstance}] takes ${it}ms [${hookInstance.tag}]")
|
||||
}
|
||||
Result()
|
||||
} catch (e: Throwable) {
|
||||
loggerE(msg = "NoSuchField happend in [$classSet] [${hookInstance.tag}]", e = e)
|
||||
Result(isNoSuch = true, e)
|
||||
}
|
||||
Result()
|
||||
} catch (e: Throwable) {
|
||||
loggerE(msg = "NoSuchField happend in [$hookClass] [${hookInstance.tag}]", e = e)
|
||||
Result(isNoSuch = true, e)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,6 +184,8 @@ class FieldFinder(private val hookInstance: YukiHookCreater.MemberHookCreater, p
|
||||
|
||||
/** 设置变量实例为 null */
|
||||
fun setNull() = set(null)
|
||||
|
||||
override fun toString() = "[${self?.javaClass?.name ?: ""}] in [${instance?.javaClass?.name ?: ""}] value \"$self\""
|
||||
}
|
||||
}
|
||||
}
|
@@ -34,25 +34,6 @@ import java.lang.reflect.Constructor
|
||||
import java.lang.reflect.Field
|
||||
import java.lang.reflect.Method
|
||||
|
||||
/**
|
||||
* 字符串转换为实体类
|
||||
* @return [Class]
|
||||
* @throws NoClassDefFoundError
|
||||
*/
|
||||
val String.clazz: Class<*> get() = Class.forName(this)
|
||||
|
||||
/**
|
||||
* 通过字符串查找类是否存在
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
val String.hasClass
|
||||
get() = try {
|
||||
clazz
|
||||
true
|
||||
} catch (_: Throwable) {
|
||||
false
|
||||
}
|
||||
|
||||
/**
|
||||
* [Class] 转换为 [HookClass]
|
||||
* @return [HookClass]
|
||||
@@ -65,6 +46,37 @@ val Class<*>.hookClass get() = HookClass(instance = this, name)
|
||||
*/
|
||||
val HookClass.normalClass get() = instance
|
||||
|
||||
/**
|
||||
* 通过字符串查找类是否存在
|
||||
*
|
||||
* - ❗仅限使用当前的 [ClassLoader]
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
val String.hasClass get() = hasClass(loader = null)
|
||||
|
||||
/**
|
||||
* 通过字符串转换为实体类
|
||||
* @param name [Class] 的完整包名+名称
|
||||
* @param loader [Class] 所在的 [ClassLoader] - 默认空 - 可不填
|
||||
* @return [Class]
|
||||
* @throws NoClassDefFoundError 如果找不到 [Class] 或设置了错误的 [ClassLoader]
|
||||
*/
|
||||
fun classOf(name: String, loader: ClassLoader? = null): Class<*> =
|
||||
if (loader == null) Class.forName(name)
|
||||
else loader.loadClass(name)
|
||||
|
||||
/**
|
||||
* 通过字符串查找类是否存在
|
||||
* @param loader [Class] 所在的 [ClassLoader]
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
fun String.hasClass(loader: ClassLoader?) = try {
|
||||
classOf(name = this, loader)
|
||||
true
|
||||
} catch (_: Throwable) {
|
||||
false
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找方法是否存在
|
||||
* @param name 名称
|
||||
@@ -151,7 +163,9 @@ fun Class<*>.obtainConstructor(vararg paramType: Class<*>): Constructor<out Any>
|
||||
* @throws IllegalStateException 如果 [T] 类型错误
|
||||
*/
|
||||
inline fun <reified T> Method.invokeStatic(vararg param: Any?) =
|
||||
invoke(null, param) as? T? ?: error("Method ReturnType cannot cast to ${T::class.java}")
|
||||
if (param.isNotEmpty())
|
||||
invoke(null, param) as? T? ?: error("Method ReturnType cannot cast to ${T::class.java}")
|
||||
else invoke(null) as? T? ?: error("Method ReturnType cannot cast to ${T::class.java}")
|
||||
|
||||
/**
|
||||
* 执行方法
|
||||
@@ -161,4 +175,6 @@ inline fun <reified T> Method.invokeStatic(vararg param: Any?) =
|
||||
* @throws IllegalStateException 如果 [T] 类型错误
|
||||
*/
|
||||
inline fun <reified T> Method.invokeAny(any: Any?, vararg param: Any?) =
|
||||
invoke(any, param) as? T? ?: error("Method ReturnType cannot cast to ${T::class.java}")
|
||||
if (param.isNotEmpty())
|
||||
invoke(any, param) as? T? ?: error("Method ReturnType cannot cast to ${T::class.java}")
|
||||
else invoke(any) as? T? ?: error("Method ReturnType cannot cast to ${T::class.java}")
|
||||
|
@@ -184,5 +184,9 @@ class HookParam(private val wrapper: HookParamWrapper) {
|
||||
* ❗请确保目标对象的类型是 [Boolean] 不然会发生意想不到的问题
|
||||
*/
|
||||
fun setFalse() = set(false)
|
||||
|
||||
override fun toString() = "Args of index $index"
|
||||
}
|
||||
|
||||
override fun toString() = "HookParam by $wrapper"
|
||||
}
|
@@ -36,6 +36,8 @@ import com.highcapable.yukihookapi.hook.bean.HookClass
|
||||
import com.highcapable.yukihookapi.hook.bean.VariousClass
|
||||
import com.highcapable.yukihookapi.hook.core.YukiHookCreater
|
||||
import com.highcapable.yukihookapi.hook.entity.YukiBaseHooker
|
||||
import com.highcapable.yukihookapi.hook.factory.classOf
|
||||
import com.highcapable.yukihookapi.hook.factory.hasClass
|
||||
import com.highcapable.yukihookapi.hook.factory.hookClass
|
||||
import com.highcapable.yukihookapi.hook.param.wrapper.PackageParamWrapper
|
||||
import com.highcapable.yukihookapi.hook.xposed.prefs.YukiHookModulePrefs
|
||||
@@ -130,13 +132,51 @@ open class PackageParam(private var wrapper: PackageParamWrapper? = null) {
|
||||
*/
|
||||
fun loadHooker(hooker: YukiBaseHooker) = hooker.assignInstance(packageParam = this)
|
||||
|
||||
/**
|
||||
* 通过字符串转换为实体类
|
||||
*
|
||||
* - 使用当前 [appClassLoader] 装载目标 [Class]
|
||||
* @return [Class]
|
||||
* @throws NoClassDefFoundError 如果找不到 [Class]
|
||||
*/
|
||||
val String.clazz get() = classOf(name = this, appClassLoader)
|
||||
|
||||
/**
|
||||
* [VariousClass] 转换为实体类
|
||||
*
|
||||
* - 使用当前 [appClassLoader] 装载目标 [Class]
|
||||
* @return [Class]
|
||||
* @throws IllegalStateException 如果任何 [Class] 都没有匹配到
|
||||
*/
|
||||
val VariousClass.clazz
|
||||
get() :Class<*> {
|
||||
var finalClass: Class<*>? = null
|
||||
if (name.isNotEmpty()) run {
|
||||
name.forEach {
|
||||
runCatching {
|
||||
finalClass = it.clazz
|
||||
return@run
|
||||
}
|
||||
}
|
||||
}
|
||||
return finalClass ?: error("VariousClass match failed of those $this")
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过字符串查找类是否存在
|
||||
*
|
||||
* - 使用当前 [appClassLoader] 装载目标 [Class]
|
||||
* @return [Boolean] 是否存在
|
||||
*/
|
||||
val String.hasClass get() = hasClass(appClassLoader)
|
||||
|
||||
/**
|
||||
* 通过 [appClassLoader] 查询并装载 [Class]
|
||||
* @param name 类名
|
||||
* @return [HookClass]
|
||||
*/
|
||||
fun findClass(name: String) = try {
|
||||
appClassLoader.loadClass(name).hookClass
|
||||
name.clazz.hookClass
|
||||
} catch (e: Throwable) {
|
||||
HookClass(name = name, throwable = e)
|
||||
}
|
||||
@@ -155,21 +195,10 @@ open class PackageParam(private var wrapper: PackageParamWrapper? = null) {
|
||||
* @param various 实例
|
||||
* @return [HookClass]
|
||||
*/
|
||||
fun findClass(various: VariousClass): HookClass {
|
||||
var finalClass: Class<*>? = null
|
||||
if (various.name.isNotEmpty())
|
||||
run {
|
||||
various.name.forEach {
|
||||
runCatching {
|
||||
finalClass = appClassLoader.loadClass(it)
|
||||
return@run
|
||||
}
|
||||
}
|
||||
}
|
||||
return finalClass?.hookClass ?: HookClass(
|
||||
name = "VariousClass",
|
||||
throwable = Throwable("VariousClass match failed of those $various")
|
||||
)
|
||||
fun findClass(various: VariousClass) = try {
|
||||
various.clazz.hookClass
|
||||
} catch (e: Throwable) {
|
||||
HookClass(name = "VariousClass", throwable = Throwable(e.message))
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -193,7 +222,7 @@ open class PackageParam(private var wrapper: PackageParamWrapper? = null) {
|
||||
* @return [HookClass]
|
||||
*/
|
||||
private fun HookClass.bind() = try {
|
||||
appClassLoader.loadClass(name).hookClass
|
||||
name.clazz.hookClass
|
||||
} catch (e: Throwable) {
|
||||
HookClass(name = name, throwable = throwable ?: e)
|
||||
}
|
||||
@@ -203,4 +232,6 @@ open class PackageParam(private var wrapper: PackageParamWrapper? = null) {
|
||||
* @return [PackageParam]
|
||||
*/
|
||||
private val thisParam get() = this
|
||||
|
||||
override fun toString() = "PackageParam by $wrapper"
|
||||
}
|
@@ -89,4 +89,6 @@ class HookParamWrapper(private val baseParam: XC_MethodHook.MethodHookParam) {
|
||||
*/
|
||||
fun invokeOriginalMember(member: Member, vararg args: Any?): Any? =
|
||||
XposedBridge.invokeOriginalMethod(member, instance, args)
|
||||
|
||||
override fun toString() = "HookParamWrapper[$baseParam]"
|
||||
}
|
@@ -48,4 +48,7 @@ class PackageParamWrapper(
|
||||
var processName: String,
|
||||
var appClassLoader: ClassLoader,
|
||||
var appInfo: ApplicationInfo
|
||||
)
|
||||
) {
|
||||
|
||||
override fun toString() = "PackageParamWrapper [packageName] $packageName [processName] $processName [appInfo] $appInfo"
|
||||
}
|
@@ -25,20 +25,29 @@
|
||||
*
|
||||
* This file is Created by fankes on 2022/2/2.
|
||||
*/
|
||||
@file:Suppress("unused", "KDocUnresolvedReference")
|
||||
@file:Suppress("unused", "KDocUnresolvedReference", "DEPRECATION", "NewApi")
|
||||
|
||||
package com.highcapable.yukihookapi.hook.type.android
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.Application
|
||||
import android.app.Service
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.ContentProvider
|
||||
import android.content.ContentResolver
|
||||
import android.content.Context
|
||||
import android.app.*
|
||||
import android.content.*
|
||||
import android.content.res.ColorStateList
|
||||
import android.content.res.Resources
|
||||
import android.os.Bundle
|
||||
import com.highcapable.yukihookapi.hook.factory.clazz
|
||||
import android.graphics.drawable.*
|
||||
import android.icu.text.SimpleDateFormat
|
||||
import android.media.MediaPlayer
|
||||
import android.os.*
|
||||
import android.service.notification.StatusBarNotification
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.util.ArrayMap
|
||||
import android.util.ArraySet
|
||||
import android.util.Base64
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.Display
|
||||
import android.view.Window
|
||||
import android.view.WindowManager
|
||||
import android.widget.Toast
|
||||
import com.highcapable.yukihookapi.hook.factory.classOf
|
||||
|
||||
/**
|
||||
* 获得 [Context] 类型
|
||||
@@ -50,7 +59,43 @@ val ContextClass get() = Context::class.java
|
||||
* 获得 [ContextImpl] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ContextImplClass get() = ("android.app.ContextImpl").clazz
|
||||
val ContextImplClass get() = classOf(name = "android.app.ContextImpl")
|
||||
|
||||
/**
|
||||
* 获得 [ContextWrapper] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ContextWrapperClass get() = ContextWrapper::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Application] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ApplicationClass get() = Application::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ApplicationPackageManager] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ApplicationPackageManagerClass get() = classOf(name = "android.app.ApplicationPackageManager")
|
||||
|
||||
/**
|
||||
* 获得 [ActivityThread] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ActivityThreadClass get() = classOf(name = "android.app.ActivityThread")
|
||||
|
||||
/**
|
||||
* 获得 [IPackageManager] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val IPackageManagerClass get() = classOf(name = "android.content.pm.IPackageManager")
|
||||
|
||||
/**
|
||||
* 获得 [LoadedApk] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val LoadedApkClass get() = classOf(name = "android.app.LoadedApk")
|
||||
|
||||
/**
|
||||
* 获得 [Activity] 类型
|
||||
@@ -59,10 +104,28 @@ val ContextImplClass get() = ("android.app.ContextImpl").clazz
|
||||
val ActivityClass get() = Activity::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Fragment] 类型
|
||||
* 获得 [Fragment] 类型 - Support
|
||||
* @return [Class]
|
||||
*/
|
||||
val FragmentClass get() = ("androidx.fragment.app.Fragment").clazz
|
||||
val FragmentClass_AndroidSupport get() = classOf(name = "android.support.v4.app.Fragment")
|
||||
|
||||
/**
|
||||
* 获得 [Fragment] 类型 - AndroidX
|
||||
* @return [Class]
|
||||
*/
|
||||
val FragmentClass_AndroidX get() = classOf(name = "androidx.fragment.app.Fragment")
|
||||
|
||||
/**
|
||||
* 获得 [FragmentActivity] 类型 - Support
|
||||
* @return [Class]
|
||||
*/
|
||||
val FragmentActivityClass_AndroidSupport get() = classOf(name = "android.support.v4.app.FragmentActivity")
|
||||
|
||||
/**
|
||||
* 获得 [FragmentActivity] 类型 - AndroidX
|
||||
* @return [Class]
|
||||
*/
|
||||
val FragmentActivityClass_AndroidX get() = classOf(name = "androidx.fragment.app.FragmentActivity")
|
||||
|
||||
/**
|
||||
* 获得 [Service] 类型
|
||||
@@ -88,12 +151,6 @@ val BundleClass get() = Bundle::class.java
|
||||
*/
|
||||
val ResourcesClass get() = Resources::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Application] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ApplicationClass get() = Application::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ContentResolver] 类型
|
||||
* @return [Class]
|
||||
@@ -104,4 +161,206 @@ val ContentResolverClass get() = ContentResolver::class.java
|
||||
* 获得 [ContentProvider] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ContentProviderClass get() = ContentProvider::class.java
|
||||
val ContentProviderClass get() = ContentProvider::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ArrayMap] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ArrayMapClass get() = ArrayMap::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ArraySet] 类型
|
||||
* @return [Class]
|
||||
*
|
||||
* ❗在 Android M (23) 及以上系统加入
|
||||
*/
|
||||
val ArraySetClass get() = ArraySet::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Handler] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val HandlerClass get() = Handler::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Handler.Callback] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val Handler_CallbackClass get() = Handler.Callback::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Message] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val MessageClass get() = Message::class.java
|
||||
|
||||
/**
|
||||
* 获得 [AsyncTask] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val AsyncTaskClass get() = AsyncTask::class.java
|
||||
|
||||
/**
|
||||
* 获得 [SimpleDateFormat] 类型
|
||||
*
|
||||
* ❗在 Android N (24) 及以上系统加入
|
||||
* @return [Class]
|
||||
*/
|
||||
val SimpleDateFormatClass_Android get() = SimpleDateFormat::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Base64] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val Base64Class_Android get() = Base64::class.java
|
||||
|
||||
/**
|
||||
* 获得 [WindowManager] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val WindowManagerClass get() = WindowManager::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Parcelable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ParcelableClass get() = Parcelable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Parcelable.Creator] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val Parcelable_CreatorClass get() = Parcelable.Creator::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Dialog] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DialogClass get() = Dialog::class.java
|
||||
|
||||
/**
|
||||
* 获得 [AlertDialog] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val AlertDialogClass get() = AlertDialog::class.java
|
||||
|
||||
/**
|
||||
* 获得 [DisplayMetrics] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DisplayMetricsClass get() = DisplayMetrics::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Display] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DisplayClass get() = Display::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Toast] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ToastClass get() = Toast::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Intent] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val IntentClass get() = Intent::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ColorStateList] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ColorStateListClass get() = ColorStateList::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ContentValues] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ContentValuesClass get() = ContentValues::class.java
|
||||
|
||||
/**
|
||||
* 获得 [SharedPreferences] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val SharedPreferencesClass get() = SharedPreferences::class.java
|
||||
|
||||
/**
|
||||
* 获得 [SpannableStringBuilder] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val SpannableStringBuilderClass get() = SpannableStringBuilder::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Window] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val WindowClass get() = Window::class.java
|
||||
|
||||
/**
|
||||
* 获得 [MediaPlayer] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val MediaPlayerClass get() = MediaPlayer::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ProgressDialog] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ProgressDialogClass get() = ProgressDialog::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Build] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val BuildClass get() = Build::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ContrastColorUtil] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ContrastColorUtilClass get() = classOf(name = "com.android.internal.util.ContrastColorUtil")
|
||||
|
||||
/**
|
||||
* 获得 [DialogInterface] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DialogInterfaceClass get() = DialogInterface::class.java
|
||||
|
||||
/**
|
||||
* 获得 [StatusBarNotification] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val StatusBarNotificationClass get() = StatusBarNotification::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Notification] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val NotificationClass get() = Notification::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Notification.Builder] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val Notification_BuilderClass get() = Notification.Builder::class.java
|
||||
|
||||
/**
|
||||
* 获得 [DialogInterface.OnClickListener] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DialogInterface_OnClickListenerClass get() = DialogInterface.OnClickListener::class.java
|
||||
|
||||
/**
|
||||
* 获得 [DialogInterface.OnCancelListener] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DialogInterface_OnCancelListenerClass get() = DialogInterface.OnCancelListener::class.java
|
||||
|
||||
/**
|
||||
* 获得 [DialogInterface.OnDismissListener] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DialogInterface_OnDismissListenerClass get() = DialogInterface.OnDismissListener::class.java
|
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
* YukiHookAPI - An efficient Kotlin version of the Xposed Hook API.
|
||||
* Copyright (C) 2019-2022 HighCapable
|
||||
* https://github.com/fankes/YukiHookAPI
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
* This file is Created by fankes on 2022/2/13.
|
||||
*/
|
||||
@file:Suppress("unused", "KDocUnresolvedReference", "NewApi")
|
||||
|
||||
package com.highcapable.yukihookapi.hook.type.android
|
||||
|
||||
import android.graphics.*
|
||||
import android.graphics.drawable.*
|
||||
import android.text.*
|
||||
|
||||
/**
|
||||
* 获得 [Typeface] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val TypefaceClass get() = Typeface::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Bitmap] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val BitmapClass get() = Bitmap::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Drawable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DrawableClass get() = Drawable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Icon] 类型
|
||||
*
|
||||
* ❗在 Android M (23) 及以上系统加入
|
||||
* @return [Class]
|
||||
*/
|
||||
val IconClass get() = Icon::class.java
|
||||
|
||||
/**
|
||||
* 获得 [GradientDrawable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val GradientDrawableClass get() = GradientDrawable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ColorDrawable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ColorDrawableClass get() = ColorDrawable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [BitmapDrawable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val BitmapDrawableClass get() = BitmapDrawable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Rect] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val RectClass get() = Rect::class.java
|
||||
|
||||
/**
|
||||
* 获得 [NinePatch] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val NinePatchClass get() = NinePatch::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Paint] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val PaintClass get() = Paint::class.java
|
||||
|
||||
/**
|
||||
* 获得 [TextPaint] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val TextPaintClass get() = TextPaint::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Canvas] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val CanvasClass get() = Canvas::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Point] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val PointClass get() = Point::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Editable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val EditableClass get() = Editable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [TextWatcher] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val TextWatcherClass get() = TextWatcher::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Editable.Factory] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val Editable_FactoryClass get() = Editable.Factory::class.java
|
||||
|
||||
/**
|
||||
* 获得 [GetChars] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val GetCharsClass get() = GetChars::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Spannable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val SpannableClass get() = Spannable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [BitmapFactory] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val BitmapFactoryClass get() = BitmapFactory::class.java
|
||||
|
||||
/**
|
||||
* 获得 [BitmapFactory.Options] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val BitmapFactory_OptionsClass get() = BitmapFactory.Options::class.java
|
@@ -29,8 +29,9 @@
|
||||
|
||||
package com.highcapable.yukihookapi.hook.type.android
|
||||
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.graphics.Outline
|
||||
import android.util.AttributeSet
|
||||
import android.view.*
|
||||
import android.widget.*
|
||||
|
||||
/**
|
||||
@@ -79,4 +80,148 @@ val CheckBoxClass get() = CheckBox::class.java
|
||||
* 获得 [CompoundButton] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val CompoundButtonClass get() = CompoundButton::class.java
|
||||
val CompoundButtonClass get() = CompoundButton::class.java
|
||||
|
||||
/**
|
||||
* 获得 [VideoView] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val VideoViewClass get() = VideoView::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ListView] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ListViewClass get() = ListView::class.java
|
||||
|
||||
/**
|
||||
* 获得 [LayoutInflater] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val LayoutInflaterClass get() = LayoutInflater::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ListAdapter] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ListAdapterClass get() = ListAdapter::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ArrayAdapter] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ArrayAdapterClass get() = ArrayAdapter::class.java
|
||||
|
||||
/**
|
||||
* 获得 [BaseAdapter] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val BaseAdapterClass get() = BaseAdapter::class.java
|
||||
|
||||
/**
|
||||
* 获得 [RelativeLayout] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val RelativeLayoutClass get() = RelativeLayout::class.java
|
||||
|
||||
/**
|
||||
* 获得 [FrameLayout] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val FrameLayoutClass get() = FrameLayout::class.java
|
||||
|
||||
/**
|
||||
* 获得 [LinearLayout] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val LinearLayoutClass get() = LinearLayout::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ViewGroup.LayoutParams] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ViewGroup_LayoutParamsClass get() = ViewGroup.LayoutParams::class.java
|
||||
|
||||
/**
|
||||
* 获得 [RelativeLayout.LayoutParams] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val RelativeLayout_LayoutParamsClass get() = RelativeLayout.LayoutParams::class.java
|
||||
|
||||
/**
|
||||
* 获得 [LinearLayout.LayoutParams] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val LinearLayout_LayoutParamsClass get() = LinearLayout.LayoutParams::class.java
|
||||
|
||||
/**
|
||||
* 获得 [FrameLayout.LayoutParams] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val FrameLayout_LayoutParamsClass get() = FrameLayout.LayoutParams::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Outline] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val OutlineClass get() = Outline::class.java
|
||||
|
||||
/**
|
||||
* 获得 [View.OnClickListener] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val View_OnClickListenerClass get() = View.OnClickListener::class.java
|
||||
|
||||
/**
|
||||
* 获得 [View.OnLongClickListener] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val View_OnLongClickListenerClass get() = View.OnLongClickListener::class.java
|
||||
|
||||
/**
|
||||
* 获得 [View.OnTouchListener] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val View_OnTouchListenerClass get() = View.OnTouchListener::class.java
|
||||
|
||||
/**
|
||||
* 获得 [AutoCompleteTextView] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val AutoCompleteTextViewClass get() = AutoCompleteTextView::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ViewStub] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ViewStubClass get() = ViewStub::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ViewStub.OnInflateListener] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ViewStub_OnInflateListenerClass get() = ViewStub.OnInflateListener::class.java
|
||||
|
||||
/**
|
||||
* 获得 [GestureDetector] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val GestureDetectorClass get() = GestureDetector::class.java
|
||||
|
||||
/**
|
||||
* 获得 [GestureDetector.SimpleOnGestureListener] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val GestureDetector_SimpleOnGestureListenerClass get() = GestureDetector.SimpleOnGestureListener::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ProgressBar] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ProgressBarClass get() = ProgressBar::class.java
|
||||
|
||||
/**
|
||||
* 获得 [AttributeSet] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val AttributeSetClass get() = AttributeSet::class.java
|
@@ -25,11 +25,38 @@
|
||||
*
|
||||
* This file is Created by fankes on 2022/2/2.
|
||||
*/
|
||||
@file:Suppress("unused")
|
||||
@file:Suppress("unused", "KDocUnresolvedReference", "DEPRECATION", "FunctionName", "NewApi")
|
||||
|
||||
package com.highcapable.yukihookapi.hook.type.java
|
||||
|
||||
import java.io.Serializable
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
import java.io.*
|
||||
import java.lang.ref.Reference
|
||||
import java.lang.ref.WeakReference
|
||||
import java.lang.reflect.Constructor
|
||||
import java.lang.reflect.Field
|
||||
import java.lang.reflect.Member
|
||||
import java.lang.reflect.Method
|
||||
import java.net.HttpCookie
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.http.HttpClient
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import java.util.zip.ZipEntry
|
||||
import java.util.zip.ZipFile
|
||||
import java.util.zip.ZipInputStream
|
||||
import java.util.zip.ZipOutputStream
|
||||
|
||||
/**
|
||||
* 任意类型的数组
|
||||
*
|
||||
* Java 中的表示:array[]
|
||||
* @param type 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
fun AnyArrayClass(type: Class<*>) = java.lang.reflect.Array.newInstance(type, 0).javaClass
|
||||
|
||||
/**
|
||||
* 获得 [Any] 类型
|
||||
@@ -53,31 +80,31 @@ val BooleanType get() = Boolean::class.java
|
||||
* 获得 [Int] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val IntType get() = Int::class.javaPrimitiveType
|
||||
val IntType get() = Int::class.javaPrimitiveType ?: UnitType
|
||||
|
||||
/**
|
||||
* 获得 [Long] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val LongType get() = Long::class.javaPrimitiveType
|
||||
val LongType get() = Long::class.javaPrimitiveType ?: UnitType
|
||||
|
||||
/**
|
||||
* 获得 [Short] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ShortType get() = Short::class.javaPrimitiveType
|
||||
val ShortType get() = Short::class.javaPrimitiveType ?: UnitType
|
||||
|
||||
/**
|
||||
* 获得 [Float] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val FloatType get() = Float::class.javaPrimitiveType
|
||||
val FloatType get() = Float::class.javaPrimitiveType ?: UnitType
|
||||
|
||||
/**
|
||||
* 获得 [Double] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DoubleType get() = Double::class.javaPrimitiveType
|
||||
val DoubleType get() = Double::class.javaPrimitiveType ?: UnitType
|
||||
|
||||
/**
|
||||
* 获得 [String] 类型
|
||||
@@ -101,4 +128,326 @@ val CharSequenceType get() = CharSequence::class.java
|
||||
* 获得 [Serializable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val SerializableClass get() = Serializable::class.java
|
||||
val SerializableClass get() = Serializable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Byte] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ByteClass get() = Byte::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Array] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ArrayClass get() = Array::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Byte] - [Array] 类型
|
||||
*
|
||||
* Java 中表示:byte[]
|
||||
* @return [Class]
|
||||
*/
|
||||
val ByteArrayClass get() = AnyArrayClass(ByteClass)
|
||||
|
||||
/**
|
||||
* 获得 [Int] - [Array] 类型
|
||||
*
|
||||
* Java 中表示:int[]
|
||||
* @return [Class]
|
||||
*/
|
||||
val IntArrayClass get() = AnyArrayClass(IntType)
|
||||
|
||||
/**
|
||||
* 获得 [String] - [Array] 类型
|
||||
*
|
||||
* Java 中表示:String[]
|
||||
* @return [Class]
|
||||
*/
|
||||
val StringArrayClass get() = AnyArrayClass(StringType)
|
||||
|
||||
/**
|
||||
* 获得 [Long] - [Array] 类型
|
||||
*
|
||||
* Java 中表示:long[]
|
||||
* @return [Class]
|
||||
*/
|
||||
val LongArrayClass get() = AnyArrayClass(LongType)
|
||||
|
||||
/**
|
||||
* 获得 [Short] - [Array] 类型
|
||||
*
|
||||
* Java 中表示:short[]
|
||||
* @return [Class]
|
||||
*/
|
||||
val ShortArrayClass get() = AnyArrayClass(ShortType)
|
||||
|
||||
/**
|
||||
* 获得 [Float] - [Array] 类型
|
||||
*
|
||||
* Java 中表示:float[]
|
||||
* @return [Class]
|
||||
*/
|
||||
val FloatArrayClass get() = AnyArrayClass(FloatType)
|
||||
|
||||
/**
|
||||
* 获得 [Double] - [Array] 类型
|
||||
*
|
||||
* Java 中表示:double[]
|
||||
* @return [Class]
|
||||
*/
|
||||
val DoubleArrayClass get() = AnyArrayClass(DoubleType)
|
||||
|
||||
/**
|
||||
* 获得 [Cloneable] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val CloneableClass get() = Cloneable::class.java
|
||||
|
||||
/**
|
||||
* 获得 [List] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ListClass get() = List::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ArrayList] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ArrayListClass get() = ArrayList::class.java
|
||||
|
||||
/**
|
||||
* 获得 [HashMap] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val HashMapClass get() = HashMap::class.java
|
||||
|
||||
/**
|
||||
* 获得 [HashSet] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val HashSetClass get() = HashSet::class.java
|
||||
|
||||
/**
|
||||
* 获得 [WeakHashMap] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val WeakHashMapClass get() = WeakHashMap::class.java
|
||||
|
||||
/**
|
||||
* 获得 [WeakReference] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val WeakReferenceClass get() = WeakReference::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Map] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val MapClass get() = Map::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Map.Entry] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val Map_EntryClass get() = Map.Entry::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Reference] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ReferenceClass get() = Reference::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Vector] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val VectorClass get() = Vector::class.java
|
||||
|
||||
/**
|
||||
* 获得 [File] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val FileClass get() = File::class.java
|
||||
|
||||
/**
|
||||
* 获得 [InputStream] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val InputStreamClass get() = InputStream::class.java
|
||||
|
||||
/**
|
||||
* 获得 [OutputStream] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val OutputStreamClass get() = OutputStream::class.java
|
||||
|
||||
/**
|
||||
* 获得 [BufferedReader] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val BufferedReaderClass get() = BufferedReader::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Date] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val DateClass get() = Date::class.java
|
||||
|
||||
/**
|
||||
* 获得 [TimeZone] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val TimeZoneClass get() = TimeZone::class.java
|
||||
|
||||
/**
|
||||
* 获得 [SimpleDateFormat] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val SimpleDateFormatClass_Java get() = SimpleDateFormat::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Timer] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val TimerClass get() = Timer::class.java
|
||||
|
||||
/**
|
||||
* 获得 [TimerTask] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val TimerTaskClass get() = TimerTask::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Thread] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ThreadClass get() = Thread::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Base64] 类型
|
||||
*
|
||||
* ❗在 Android O (26) 及以上系统加入
|
||||
* @return [Class]
|
||||
*/
|
||||
val Base64Class_Java get() = Base64::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Observer] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ObserverClass get() = Observer::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Set] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val SetClass get() = Set::class.java
|
||||
|
||||
/**
|
||||
* 获得 [JSONObject] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val JSONObjectClass get() = JSONObject::class.java
|
||||
|
||||
/**
|
||||
* 获得 [JSONArray] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val JSONArrayClass get() = JSONArray::class.java
|
||||
|
||||
/**
|
||||
* 获得 [StringBuilder] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val StringBuilderClass get() = StringBuilder::class.java
|
||||
|
||||
/**
|
||||
* 获得 [StringBuffer] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val StringBufferClass get() = StringBuffer::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ZipEntry] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ZipEntryClass get() = ZipEntry::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ZipFile] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ZipFileClass get() = ZipFile::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ZipInputStream] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ZipInputStreamClass get() = ZipInputStream::class.java
|
||||
|
||||
/**
|
||||
* 获得 [ZipOutputStream] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val ZipOutputStreamClass get() = ZipOutputStream::class.java
|
||||
|
||||
/**
|
||||
* 获得 [HttpURLConnection] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val HttpURLConnectionClass get() = HttpURLConnection::class.java
|
||||
|
||||
/**
|
||||
* 获得 [HttpCookie] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val HttpCookieClass get() = HttpCookie::class.java
|
||||
|
||||
/**
|
||||
* 获得 [HttpClient] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val HttpClientClass get() = HttpClient::class.java
|
||||
|
||||
/**
|
||||
* 获得 [AtomicBoolean] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val AtomicBooleanClass get() = AtomicBoolean::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Class] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val JavaClass get() = Class::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Method] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val JavaMethodClass get() = Method::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Field] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val JavaFieldClass get() = Field::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Constructor] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val JavaConstructorClass get() = Constructor::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Member] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val JavaMemberClass get() = Member::class.java
|
||||
|
||||
/**
|
||||
* 获得 [Annotation] 类型
|
||||
* @return [Class]
|
||||
*/
|
||||
val JavaAnnotationClass get() = Annotation::class.java
|
Reference in New Issue
Block a user