赞同在同名变量上的静态类使用
B类扩展A类,A类有一个名为K的变量,我也有一个名为“K”的静态类。在类B中有没有办法使用静态类K来继承继承变量K?赞同在同名变量上的静态类使用
(我用的是被混淆反编译的代码的工作,我不能重命名或者K的版本)
您可能需要引用类K
与它的全名,即myPackage.K
若要添加到问题...这些类没有包声明... – Zachar543
每个类都有一个包。我会留给你弄清楚它是什么。 –
@Kublai每个类都有一个包,但并不是每个类都可以引用来包含它的包名。这不适用于K这里,因为它是一个嵌套类。 –
由于K是在默认包中,我认为你唯一的选择是使用反射来引用类K,或者写一个类来包装K,这样你就可以使用不同的名字。或者如果你在K的一些静态成员之后,你也可以使用静态导入来获得它们。
+1我不知道有关默认包的限制 - 猜我学到了一些东西。 –
如果A,B,K都是顶级的并且是默认包,那么在B内部对K的任何引用将解析为K类,而不是A.K.如果K是一个B的嵌套类,那么它可以被引用为B.K,看到我的回复如下 –
@Hemal:这取决于你想要用K做什么,但是模棱两可的引用会去到字段,而不是类。例如。 'int x = K.y',其中y是类K的静态字段,将不起作用,因为K将解析为字段而不是类。然而,当我想到它时,我在想如果OP实际上有一个命名问题,他/她可能想要的是一个静态导入。我认为访问静态会员是唯一会发生潜在冲突的地方。 –
这是行不通的吗?
class A {
int X;
}
class B extends A {
static class X {}
void foo() {
X = 5; // A.X variable
B.X x = new B.X(); // B.X nested class
}
}
反编译的代码,呵呵?听起来完全合法(*讽刺*) – tjameson
你是什么意思的“静态类” - 它是一个静态嵌套类? –
为什么不简单地从它的合法所有者那里获取信息?或者,如果不是源代码,那么您可以编写实用程序等。 –