相关疑难解决方法(0)

Kotlin将字符串作为字符串

我无法找到如何让一个变量(或不变)的类型String,比如typeof(variable),与科特林语言.怎么做到这一点?

java kotlin

38
推荐指数
2
解决办法
2万
查看次数

使用getSimpleName()vs getName()获取记录器

我见过使用过的代码log4j,它logger是为给定的Logger使用而获取的

static public Logger getLogger(String name)
Run Code Online (Sandbox Code Playgroud)

static public Logger getLogger(Class clazz)
Run Code Online (Sandbox Code Playgroud)

与前api明确传递getSimpleName(),而后者使用getName()传递Class.这两者有区别吗?如果我将各种包配置为在log4j.properties文件中的不同级别进行日志记录会影响吗?

java logging log4j

18
推荐指数
5
解决办法
3万
查看次数

如果只有一个完全限定的名称,如何获取java类的二进制名称?

反射类和方法以及类加载器等需要所谓的"二进制"类名来使用.

问题是,如果一个人只有一个完全限定的名称,即一个人在源代码中使用的名称,那么如何获得二进制名称.

例如:

package frege;
public static class RT {
    ....
    public static class X { .... }
}
Run Code Online (Sandbox Code Playgroud)

该类的完全限定名称将是frege.RT.X.然而,要获得类对象,需要编写:

Class.forName("frege.RT$X")
Run Code Online (Sandbox Code Playgroud)

并不是

Class.forName("frege.RT.X")    // fails with ClassNotFoundException
Run Code Online (Sandbox Code Playgroud)

因为X碰巧是一个内在的阶级frege.RT.

一种可能的,但笨拙的,解决办法是更换.$向后,一个接一个,直到Class.forName()不扔ClassNotFoundException了或者有没有更多的.替换.

有没有更好/众所周知/标准的解决方案?我看着在API文档Class,CLassLoaderjava.lang.reflect但没有发现任何有用.

java reflection jvm

14
推荐指数
1
解决办法
7547
查看次数

Name和CanonicalName有什么区别?

Java Class.getName()Class.getCanonicalName()?有什么区别?

java class names canonical-name

14
推荐指数
1
解决办法
8808
查看次数

将getCallingActivity的活动与另一个活动进行比较

我想将调用活动与其他人进行比较,以了解哪一个称为当前活动.我试过了:

getCallingActivity().getClassName().toString().equals(MainActivity.class.toString())
Run Code Online (Sandbox Code Playgroud)

它不起作用,除了在调用Intent中传递一个值,我们如何使用getCallingActivity()或者比较类getCallingPackage()

java android android-activity

7
推荐指数
1
解决办法
2156
查看次数