我有一个界面:
public interface ICentrala extends Remote{
int registerGate(Object gate) throws RemoteException;
}
课程:
Class" Gate":
public class Gate{
int number;
int in=0;
int out=0;
...
}
Class" Centrala"
...
ArrayList<Object> listaBramek = new ArrayList<Object>();
...
public int registerGate(Object bramka) {
listaBramek.add(bramka);
return 0;
}
...
现在举例来说我想添加2个门:
Gate gate1 = new Gate();
gate1.number=1;
Gate gate2 = new Gate();
gate2.number=2;
registerGate(gate1)
registerGate(gate2)
现在我想获得现有门的所有名称。我试过的是:
public void getGates(){
for (Object object: listaBramek){
System.out.println(object)
}
}
但是在system.out.println&#34; number&#34;中的对象中之后并不存在。 我无法对Interface进行任何更改。 提前感谢您的帮助
答案 0 :(得分:2)
我不确定我完全理解你,但你可以覆盖类Gate中的toString()方法:
@Override
public String toString() {
return "gate number: " + number;
}
答案 1 :(得分:1)
最好在Gate
类中创建一个getter方法,如下所示:
public int getNumber(){
return number;
}
然后在您使用listaBramek
个对象填充Gate
列表后,您可以循环浏览它们并在转换为Gate
对象后打印出该值
for(Object object : listaBramek){
System.out.println(((Gate) object).getNumber());
}
强制转换是必要的,因为Object
没有定义number
变量,Gate
对象确实存在并且是Object
类的扩展。当您循环使用它时,即使它们是Gate
个对象,您也可以使用它们,就好像它们是通用的Object
一样,因为
Object object:listaBramek
这不是最佳的,并且容易出现运行时错误,因为listaBramek
列表不够严格 - 它应该只允许Gate
个对象存储在其中,除非你是愿意做进一步的失败保险。