如何在java中与嵌套类干净地交互?

时间:2016-06-19 15:00:46

标签: java

如何存储和销售?在Java中以下列方式访问属性?

InnerTest it = new InnerTest();
it.id = "123";
it.user.userID = "456";

以下代码无法满足要求,但它为问题提供了背景信息:

public class InnerTest {
    public String id;
    static class user {
        static String userName;
        static String userID;
    }
}

如果我的方法很接近,那么练习就是在类中存储JSON架构,但只需按照上面的说明访问它。我正在为Tweets创建一个类,一个内部属性组在“user”下:

[...]
 "in_reply_to_user_id" : null,
  "in_reply_to_user_id_str" : null,
  "in_reply_to_screen_name" : null,
  "user" : {
    "id" : 19792676,
    "id_str" : "19792676",
    "name" : "(((Payne¯\\_(ツ)_/¯)))",
[...]

我正在寻找一种在我的班级中优雅地表达'使用那些内部变量的方法,如:

foo.user.id_str ...

一种嵌套/匿名类是否正确?即使使用静态修饰符,它看起来也不像......

2 个答案:

答案 0 :(得分:1)

在这种情况下,嵌套类是一个不错的选择。但是,您误解了staticstatic class的用途 - 这是一种创建可以独立于其外层实例创建的类的语法。 不是一个必须只有静态字段和方法的类。

因此,应修正您的声明,使userNameuserId字段为非静态字段:

public class InnerTest {
    public String id;
    public UserType user = new UserType();
    static class UserType {
        String userName;
        String userID;
    }
}

答案 1 :(得分:1)

您的嵌套类定义具有静态字段,这些字段绑定到类而不是对象。如果我们将它们更改为public,则定义将是正确的,尽管您仍然没有在InnerTest类中添加此类的成员变量。看一下this answer,它阐明了类定义和对象实例之间的区别。

public class InnerTest {
    public String id;
    public User user;

    static class User {
        public String userName;
        public String userID;
    }
}

现在,您可以按照预期的方式创建新的InnerTest对象并访问user数据。

相关问题