只是一个普通的查询是由某人意外地给一个类的变量赋予一个名称,该名称与另一个类匹配,其中两个类都有一个同名的方法,其中一个是静态的.
鉴于以下内容:
public class A {
public static String dothis(String string){
return "Class";
}
public static String dothis(String string, String string2){
return "Class Method 2";
}
}
Run Code Online (Sandbox Code Playgroud)
还有这个
public class B {
public String dothis(String string){
return "Object";
}
}
Run Code Online (Sandbox Code Playgroud)
一旦对象被实例化,以下是否总是调用对象而不是静态方法?
System.out.println(A.dothis("..."));//outputs Class
B A = new B();
System.out.println(A.dothis("..."));//outputs Object
Run Code Online (Sandbox Code Playgroud)
实例化后的Nb似乎不可能在A类中调用任何静态方法,即
B A = new B();
System.out.println(A.dothis("..."));
System.out.println(A.dothis("...","..."));//Won't compile
Run Code Online (Sandbox Code Playgroud)
上面不会编译抱怨错误的树型,
编辑:添加了特定的例外: -
java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>
at testbed.....
Run Code Online (Sandbox Code Playgroud)
...这是否意味着编译器有效地决定调用哪个方法,因此差异javac版本的行为可能会有所不同.
这里发生了什么,如果这有保证,它可以用于某种方式的混淆,还是反编译会删除名称冲突?
java ×1