Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android、Java和数据类_Java_Android_Class - Fatal编程技术网

Android、Java和数据类

Android、Java和数据类,java,android,class,Java,Android,Class,我对使用Java比较陌生,并且有C/C++的背景。 在我的应用程序中,我需要一些简单地保存数据的类 我不想每个数据类都有一个文件,而是简单地将所有类放在一个基本类中 这是我要宣布的- public class InternalData { public class LocalSearchDef { public String m_sAdresse = null; public GeoPoint m_gpPoint = null; p

我对使用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类型的封闭实例(例如x.new A(),其中x是InternalData的实例)来限定分配。”,当我尝试创建例如GeoLocation的新实例时,我得到了错误

这发生在以下情况之一:

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

有人能给我指出正确的方向吗?

您正在尝试使用一个非静态的内部数据,而没有内部数据实例作为它的归属


请参阅:

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

public static class Foo {

}

尽管可以使用静态声明来实现,但不要尝试这样做

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

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


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

这会解决他的问题,但更好的代码实践是将其内部类与其父类的实例封装在一起,除非他理解静态的工作方式以及如何使用它。鉴于他的意图只是将一些类作为“内部数据”组合在一起,因此他没有理由拥有外部类的实例,因此,我想说,最好的做法可能是使类保持静态。@Charles-他现在不确定静态是如何按照您所说的方式工作的-您提出了疑问。每个类实例是否都有自己的数据空间,或者是否存在数据共享?这样做的一个明显原因是为了处理项目管理,而不是拥有大量的文件。我决定只创建一个数据包来保存所有与数据相关的类。这使我能够更好地从UI中分离内容。谢谢你的评论。注意:我想把这个放在答案部分,但不想等8个小时。可能是重复的