我觉得我在这里错过了一些令人眼花缭乱的东西,这对Java大师来说是如此低调的结果:
我的代码看起来像这样:
private static void myFunc(JComponent c) {
if (c instanceof JPanel) {
//stuff
}
else if (c instanceof JMenu) {
// other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
尽管JPanel和JMenu都是JComponent的子类,但第一个instanceof给出了一个错误:
Incompatible conditional operand types JComponent and JPanel
Run Code Online (Sandbox Code Playgroud)
而第二个工作正常.为什么它认为我JComponent永远不会是一个JPanel?
我怀疑你是从某个地方导入另一个JPanel.对于分钟,请尝试使用完全限定类型:
private static void myFunc(javax.swing.JComponent c) {
if (c instanceof javax.swing.JPanel) {
//stuff
}
}
Run Code Online (Sandbox Code Playgroud)
除此之外,我无法想到它不会编译的任何理由......如果你能提出一个简短但完整的程序来证明这个问题,那将会有所帮助.编译好:
import javax.swing.JComponent;
import javax.swing.JPanel;
public class Test {
public static void myFunc(JComponent c) {
if (c instanceof JPanel) {
System.out.println("yes");
}
}
}
Run Code Online (Sandbox Code Playgroud)