如何存储和销售?在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 ...
一种嵌套/匿名类是否正确?即使使用静态修饰符,它看起来也不像......
答案 0 :(得分:1)
在这种情况下,嵌套类是一个不错的选择。但是,您误解了static
中static class
的用途 - 这是一种创建可以独立于其外层实例创建的类的语法。 不是一个必须只有静态字段和方法的类。
因此,应修正您的声明,使userName
和userId
字段为非静态字段:
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
数据。