我正在尝试转换Java方法,该方法检查Android API的SignalStrength级别,如下所示:
public static int getSignalLevel(final SignalStrength signal) {
try {
final Method m = SignalStrength.class.getDeclaredMethod("getLevel", (Class[]) null);
m.setAccessible(true);
return (Integer) m.invoke(signal, (Object[]) null);
} catch (Exception e) {
Log.debug(TAG, "Google hates developers", e);
return 0;
}
}
转换为Kotlin后,我得到了(我打算制作Kotlin Extension):
fun SignalStrength.getSignalLevel(): Int {
return try {
val m = SignalStrength::class.java.getDeclaredMethod("getLevel", *null as Array<Class<*>>?)
m.isAccessible = true
m.invoke(this, *null as Array<Any>?) as Int
} catch (e: Exception) {
0
}
}
问题出在:
*null as Array<Class<*>>?
扩展运算符(* foo)可能不适用于可空类型的参数