Java 如何引用名称冲突的特定类?

Java 如何引用名称冲突的特定类?,java,oop,Java,Oop,我无法在下面的代码中创建java.awt.Rectangle对象。但是,我仍然可以创建矩形对象。。。 请解释一下为什么会这样 package examples; import java.awt.*; public class Rectangle { public static void main(String[] args) { java.awt.Rectangle rect = new Rectangle(); System.out.println(re

我无法在下面的代码中创建
java.awt.Rectangle
对象。但是,我仍然可以创建矩形对象。。。 请解释一下为什么会这样

package examples;
import java.awt.*;
public class Rectangle {
    public static void main(String[] args) {
        java.awt.Rectangle rect = new Rectangle();
        System.out.println(rect.toString());    
    }
}
请解释一下为什么会这样

package examples;
import java.awt.*;
public class Rectangle {
    public static void main(String[] args) {
        java.awt.Rectangle rect = new Rectangle();
        System.out.println(rect.toString());    
    }
}
您正在创建
Rectangle
类的实例,但试图将其分配给
java.awt.Rectangle
变量。您只需将其更改为:

java.awt.Rectangle rect = new java.awt.Rectangle();

当然,您首先应该尽可能避免此类命名冲突,但只要类在包中,您就可以始终使用完全限定名。(在默认包中,事情变得更加棘手,您应该避免。)

您的类
Rectangle
从包
java.awt
中隐藏类
Rectangle
。您需要完全限定的名称:

java.awt.Rectangle rect = new java.awt.Rectangle();
喜欢

package examples;
import java.awt.*;

public class Rectangle {
public static void main(String[] args) {
    java.awt.Rectangle rect = new java.awt.Rectangle();
    System.out.println(rect.toString());    
}
}

解释——这就是为什么它是这里最好的答案。