我需要在表单中填充一个选择组件,并在外部类(同一个包)中存在ArrayList
DatabaseList.java: 包pmi.sqltoxml;
import java.util.ArrayList;
public class DatabaseList {
public void SetLista() {
ArrayList<String> db = new ArrayList<>();
db.add("ADB_PMISOFTWARE");
db.add("ADB_DEMO");
}
}
MainForm.java:
public class Mainform extends javax.swing.JFrame {
DatabaseList db = new DatabaseList();
public Mainform() {
initComponents();
}
@SuppressWarnings("unchecked")
private void initComponents() {
choice1 = new java.awt.Choice();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
choice1.setName("dbList"); // NOI18N
for (String dbItem : db ){
choice1.add(dbItem);
}
...
Netbeans告诉我
for-each
不适用于表达式类型。必填Array
或java.lang.iterable
。找到:DatabaseList
。
但是,ArrayList
不是iterable
界面?
答案 0 :(得分:2)
您必须返回列表:
public List<String> setLista() {
List<String> db = new ArrayList<>();
db.add("ADB_PMISOFTWARE");
db.add("ADB_DEMO");
return db;//<------You have to return the list otherwise you can't use this array list
}
然后你可以像这样调用你的方法:
for (String dbItem : db.setLista()){
choice1.add(dbItem);
}
答案 1 :(得分:1)
让db
列出您班级的private
成员,并在getDb()
班级中添加一个获取者(DatabaseList
),并对其进行迭代(for (String dbItem: db.getDb())
)。
或者只使用getList()
方法返回List
:
public class DatabaseList {
public void getLista() {
ArrayList<String> db = new ArrayList<>();
db.add("ADB_PMISOFTWARE");
db.add("ADB_DEMO");
return db;
}
}
for (String dbItem : db.getLista()){
choice1.add(dbItem);
}
您的自定义班级DatabaseList
本身不是List
/ Iterable
本身,而只是一个包装器,因此无法在enhanced for loop中使用。