Android、Java和数据类
我对使用Java比较陌生,并且有C/C++的背景。 在我的应用程序中,我需要一些简单地保存数据的类 我不想每个数据类都有一个文件,而是简单地将所有类放在一个基本类中 这是我要宣布的-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
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个小时。可能是重复的