Android Studio Java中类名和包名的冲突

0vvn1miw  于 2023-10-23  发布在  Android
关注(0)|答案(2)|浏览(147)

在以下代码的上下文中:

package animal; 
public class lion {
}

package zoo; 
public class animal {
    public class lion {
    }
}

当我使用'animal.lion'来声明和示例化一个对象时,

animal.lion cub = new animal.lion()

Android Studio正在从包“zoo”中识别类“lion”。但是,我打算从包“animal”访问类“lion”。我怎样才能做到这一点而不需要改变包名或类名
编辑:我很清楚命名约定,但我不允许编辑类或包的名称。它们都是用小写字母写的, Package 只是一个单词。

j1dl9f46

j1dl9f461#

继续评论,让我们考虑一个真实的世界场景(使用a,c,d.可能是坚韧的和误导的):

package com.example.animals; // com/example/animals/Lion.java
public class Lion {
}

package com.example.zoo; // com/example/zoo/Zoo.java
public class Zoo {
    public class Lion {
    }
}

如果你想从com创建一个Lion类的示例; example.animals和com.example.zoo包中有一个Lion类,你可以这样做:

com.example.zoo.Zoo.Lion zooLion = new com.example.zoo.Zoo().new Lion(); // This refers to the inner class Lion of class Zoo in package com.example.zoo

// To refer to the class Lion in package com.example.animals, use the fully qualified name
com.example.animals.Lion animalsLion = new com.example.animals.Lion();
at0kjp5o

at0kjp5o2#

可以通过将类c从包d导入到包a中来实现这一点。为此,请将以下import语句添加到包a中类文件的顶部
进口直流电;

相关问题