java - 如何在不使用类名的情况下在静态方法中获取 Class 对象?

标签 java class inheritance reflection static

我有

public class A {
    static X s_x = new X(A.class);
}

public class B {
    static X s_x = new X(B.class);
}

等等,对于没有任何特殊关系或共性的许多类。我真正希望我能做的是在父类(super class)中初始化 s_x,但使用特定于后代类的代码;这是不可能的,因为静态代码不可覆盖。所以,我想至少让我的复制粘贴更容易。我想要一个计算为 Class 对象的魔术表达式,即写:

    static X s_x = new X(/* magic expression here */);

无论我在哪个类中声明 X,魔术表达式都是相同的,但与上面的示例相同。次优选择是具有相同效果的静态方法。

注意事项:

  • Java 6(如果可能)。
  • 这个问题不是(必然)关于日志...

最佳答案

我也有一次这个奇怪的要求,我尝试搜索但没有找到任何东西,所以我猜答案是不可能的。

但我被告知要重新考虑我的方法,当我尝试时,我想出了没有这个奇怪要求的相同解决方案。所以请重新考虑你的方法。我相信你能像我一样解决它。另外,如果您可以发布您要解决的问题/场景,也许我可以提供帮助。

关于java - 如何在不使用类名的情况下在静态方法中获取 Class 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14379092/

相关文章:

java - 阻止用户在计算器中使用某些字符

java - 如何使用 Java Stream 运算符获取子值的子值并收集为 map

java - 在某些特定情况下,无法为 <R> map(Function<? super T,? extends R>) 推断类型参数

javascript - 从javascript中的子类回调访问主类属性

c++ - 访问基类函数

c# - 在 OOP 的传统意义上不相关的类的继承

java - com.microsoft.sqlserver.jdbc.SQLServerException : The index 2 is out of range :(

Java/Kotlin - 区分不同模块中的相同限定名称

c++ - 使用 C++ 和命名空间编译错误

java - 子类中的 super 构造函数 - Java