我想将myVector
传递给另一个类(Case.java
),但我收到此类错误消息。类型不匹配:无法从Object []转换为int [] 。有谁能告诉我如何解决这个问题?
User.java
JButton btnNewButton = new JButton("Process");
btnNewButton.setBounds(360, 296, 89, 23);
contentPane.add(btnNewButton);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Integer a = (comboBox.getSelectedIndex() + 1);
Integer b = (comboBox_1.getSelectedIndex() + 1);
Integer day = (comboBox_2.getSelectedIndex() + 1);
ArrayList<Integer> myVector = new ArrayList<Integer>();
myVector.add(a);
myVector.add(b);
myVector.add(day);
Case ca = new Case();
try {
ca.addPlace(myVector);
LoginGUI um = new LoginGUI();
um.setVisible(true);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Case.java
public class Case {
public Case() {
// TODO Auto-generated constructor stub
}
public void addPlace(ArrayList<Integer> h) {
int vec1[] = h.toArray();
int vec2[] = {2, 1, 3, 2};
double cos_sim = cosine_similarity(vec1, vec2);
}
答案 0 :(得分:3)
我们无法将Object[]
转换为int[]
。这两个类是水平的。
如果您愿意,可以使用明确向下投射将Object[]
转换为Integer[]
包装类。
Object[] obj ={10,30,20,100};
Integer[] in = (Integer[]) obj;
答案 1 :(得分:3)
将新数组传递给toArray
方法。像这样:
Integer[] vec = h.toArray(new Integer[h.size()]);
答案 2 :(得分:1)
使用Java8,这是可能的:
int[] vec1 = h.stream().filter(t -> t != null).mapToInt(t -> t).toArray();
答案 3 :(得分:0)
我想你必须进行手动转换:
ArrayList<Integer> h = new ArrayList<>();
int[] result = new int[h.size()];
int index = 0;
for(int val:h){
result[index++] =val;
}
当然,如果你在原始ArrayList&#34; h&#34;中有空值,它可能抛出NullPointerException。
答案 4 :(得分:0)
首先,您没有将Object[]
转换为int[]
,您在此处所做的是ArrayList<Integer>
到int[]
。您获取无法从Object []转换为int [] 的错误是因为Integer[]
无法直接转换为int[]
。
所以任何方法都无法直接使用这个。但你可以这样做: -
int[] vec1= new int[h.size()];
int index = 0;
for(int i : h){
vec1[index] = i;
index++;
}
但是,如果您可以将int[] vec1
更改为Interger[] vec1
,那么您可以这样做: -
Integer[] vec1 = h.toArray(new Integer[h.size()]);