我正在编写一个针对Java 8代码的编译器。源语言允许C ++ - 可以嵌套的名称空间;目标必须反映这一点。例如:
// all members removed
class Arctan {
public static class Arctan { // error: Duplicate class 'Arctan'
public static class a {
public static class b {
}
}
public static class c {
public static class a {
public static class b {
}
public static class c { // error: Duplicate class 'c'
public static class a { // error: Duplicate class 'a'
public static class b {
}
}
}
}
}
public static class m {
public static class b {
}
}
}
}
但是,这会产生class Arctan is already defined in package unnamed package public static class Arctan
错误。一位同事建议将每个static class
改为单身;虽然这是一个好主意,但我担心它可能会使一些生成的代码复杂化,或者它可能会使实现变得混乱。
static class
的选择是缺少C ++ namespace
等价物,生成的代码必须都在同一个文件中(这是设计规范的一部分)。
我想知道是否有替代使用单身人士。