1

我对使用 Java 比较陌生,并且来自 C/C++ 背景。在我的应用程序中,我需要一些只保存数据的类。

我不是每个数据类都有一个文件,而是简单地将所有类放在一个基本类中。

这是我要声明的——

public class InternalData
{
    public class LocalSearchDef
    {
        public String m_sAdresse = null;
        public GeoPoint m_gpPoint = null;
        public int m_iSearchRadius = 0;
    }

    public class GeoBounds
    {
        public double m_dNELat;
        public double m_dNELng;
        public double m_dSWLat;
        public double m_dSWLng;
    }
}

但是,eclipse告诉我“没有InternalData类型的封闭实例是可访问的。必须使用InternalData类型的封闭实例(例如xnew A(),其中x是InternalData的实例)来限定分配。”,当我尝试创建例如 GeoLocation 的新实例我收到错误消息。

这发生在以下任一情况下:

GeoLocation gl = new GeoLocation();
or
GeoLocation gl = new InternalData.GeoLocation();

谁能指出我正确的方向?

4

3 回答 3

1

您需要将内部类设为静态。

public static class Foo {

}
于 2012-04-30T15:48:22.770 回答
1

尽管您可以使用静态声明来做到这一点,但不要试图这样做。

如果要将类封装在另一个类中,它们应该与封闭类有某种关系(如 Map.Entry 到 Map)。您只是试图通过创建一个持有者类将多个类组织到同一个文件中,这没有任何意义。

每个文件一个类没有错,这是标准的 Java 方法。您需要证明为什么它们应该在同一个文件中,而不是相反。

您可能还希望使用访问器方法声明您的类,而不仅仅是创建对数据成员具有所有公共访问权限的数据结构。这是糟糕的OO。

于 2012-04-30T15:59:23.640 回答
0

您正在尝试使用没有 InternalData 实例的非静态内部。

请参阅:需要包含 <my reference> 的封闭实例

于 2012-04-30T15:47:51.587 回答