我有一个名为Preferences的类。如何将对象推入此ArrayList?
package example;
import java.util.ArrayList;
public class Preferences {
public Preferences() {
super();
}
ArrayList<Object> preferences;
public void setPreferences(ArrayList<Object> preferences) {
this.preferences= preferences;
}
public ArrayList<Object> getPreferences() {
return preferences;
}
}
在我的主要方法中,我这样做:
package example;
public class Runner {
public Runner() {
super();
Preferences preferences = new Preferences();
}
public static void main(String[] args) {
Runner runner = new Runner();
}
}
我想得到一个这样的对象的ArrayList(重要的是,我不想指定类型,因为它们可能会有所不同(。我希望preferenceValue可以重复使用。
[
{
preferenceName: "Default Date",
preferenceValue: "05/07/2020"
},
{
preferenceName: "Default Number",
preferenceValue: 55
},
{
preferenceName: "goToHomePage",
preferenceValue: true
}
]
您似乎需要
public class User {
private final String userName;
public User(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
}
public class Runner {
final List<User> users = new ArrayList<>();
public Runner() {
users.add(new User("User 1"));
users.add(new User("User 2"));
}
public static void main(String[] args) {
Runner runner = new Runner();
}
}
它必须包含不同的类型。
如果您有用户记录,但不知道属性或其值可能是什么,则可以使用Map。
public class User {
private final Map<String, Object> attributes;
public User(Map<String, Object> attributes) {
this.attributes= attributes;
}
public User(String key, Object value, Object... keysAndValues) {
this(new LinkedHashMap<>());
attributes.put(key, value);
for (int i = 0; i < keysAndValues.length; i += 2)
attributes.put((String) keysAndValues[i], keysAndValues[i+1]);
}
public Map<String, Object>getAttributes() {
return attributes;
}
}
public class Runner {
final List<User> users = new ArrayList<>();
public Runner() {
users.add(new User("userName", "User 1", "favouriteNumber", 7));
users.add(new User("userName", "User 2", "colour", Color.BLUE));
}
public static void main(String[] args) {
Runner runner = new Runner();
}
}
这里我假设您的属性名称是字符串类型。例如,如果您使用的是YAML,它可以有任何类型作为属性,所以您可以只使用Object
{ preferenceName: 'Default Date', preferenceValue: '05/07/2020' },
{ preferenceName: 'Default Number', preferenceValue: 55 },
{ preferenceName: 'goToHomepage', preferenceValue: true }
我会将其构建为
new User("Default Date", LocalDate.parse("05/07/2020", DateTimeFormatter.ofPattern("dd/MM/yyyy")),
"Default Number", 55,
"goToHomepage", true);
然而,理想情况下,你应该提前知道可能的属性是什么,并使用一个看起来像的用户
class User {
LocalDate defaultDate;
long defaultNumber;
boolean goToHomepage;
}