我有一个叫做“首选项”的类。如何将对象推入此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
}
]
答案 0 :(得分:2)
您似乎需要
Dim indexx As Integer = 0
Dim lines() As String = System.IO.File.ReadAllLines(FILE_NAME)
Dim numOfChars As Integer
While indexx < RichTxtOut.Text.LastIndexOf("'")
numOfChars = 0
RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None)
'count the number of characters after the apostrophe
For li As Integer = 0 To Lines(RichTxtOut.GetLineFromCharIndex(RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None))).Count - 1
numOfChars += 1
Next
RichTxtOut.Select(RichTxtOut.Find("'", indexx, RichTxtOut.TextLength, RichTextBoxFinds.None), numOfChars)
RichTxtOut.SelectionColor = Color.Green
numOfChars = 0
indexx = RichTxtOut.Text.IndexOf("'", indexx) + 1
End While
它必须容纳不同的类型。
如果您有用户记录,但不知道属性或值可能是什么,则可以使用地图。
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();
}
}
在这里,我假设您的属性名称是String类型。例如,如果您使用YAML,则它可以具有任何类型的属性,因此您可以只使用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();
}
}
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);