命名空间和类具有相同的名称
本文关键字:命名空间 | 更新日期: 2023-09-27 18:16:27
我有以下类
namespace COM.XX.ZZ{
class XX{
}
}
当我试图在另一个类
中使用它时using COM.XX.ZZ;
class someClass{
static void main(String args[]){
XX.someMethod();
}
}
Visual studio混淆了类和包,因为它们有相同的名称。名称空间和类应该总是不同,这是visual studio的已知限制吗?
没有必要使用单独的类名和名称空间名,但确实,编译器有时会感到困惑。对于各方来说,最好保持名称空间名和类名分开。
如果您确实想使用相同的名称,可以帮助编译器避免混淆。为您的类使用using
:
using XXClass = COM.XX.ZZ.XX;
那么你可以这样使用:
XXClass.someMethod();
这是不推荐的,所以我建议重命名它们中的任何一个。
另一个可能失败的原因是someMethod
不是静态的。在这种情况下,编译器认为你是指XX
-命名空间。尝试先实例化XX
:
XX xx = new XX();
xx.someMethod();
如果您的类具有静态方法,称为someemethod(),该方法是可访问的,例如:
namespace COM.XX.ZZ
{
class XX
{
public static void SomeMethod()
{
}
}
}
你可以使用它:
using COM.XX.ZZ;
class someClass
{
static void main(String args[])
{
COM.XX.ZZ.XX.SomeMethod();
}
}
注意,我在调用静态方法之前添加了完整的名称空间前缀。
编辑:对于命名空间和类使用相同的名称真的不是一个好主意。