Java 从不同对象的arrayList中获取特定对象
我有一个接口MyShape,我有3个类:MyLine、MyEllipse和MyRectangle 我有一个我形状的数组列表,当你在屏幕上画一个特定的形状时,它会被填满 右键单击形状时,应该能够在屏幕上拖动它。我想对右键单击的形状调用contains方法,查看事件坐标是否在范围内 我想做点什么,围绕着Java 从不同对象的arrayList中获取特定对象,java,oop,arraylist,interface,drag-and-drop,Java,Oop,Arraylist,Interface,Drag And Drop,我有一个接口MyShape,我有3个类:MyLine、MyEllipse和MyRectangle 我有一个我形状的数组列表,当你在屏幕上画一个特定的形状时,它会被填满 右键单击形状时,应该能够在屏幕上拖动它。我想对右键单击的形状调用contains方法,查看事件坐标是否在范围内 我想做点什么,围绕着 for(int i = 0; i < shapes.size(); i++){ if(shapes.get(i).contains(e.getX(),e.getY()){
for(int i = 0; i < shapes.size(); i++){
if(shapes.get(i).contains(e.getX(),e.getY()){
shapes.get(i).move(e.getX(),e.getY()){
}
}
for(int i=0;i
但是shapes接口没有扩展任何内容,因此无法访问contains方法。我尝试将contains方法添加到接口中,然后通过在每个shape类中调用super类方法来重写它,但这也不起作用
总结一下我的问题。我如何在MyShape接口的列表上调用contains方法。或者子问题,我如何在索引I处获取特定类,并在该特定类上调用contains方法。当您尝试添加
contains()时
toMyShape
您是如何覆盖它的?您编写的代码是什么。因为您的想法似乎是对的,但是contains()
方法在MyLine、MyEllipse和myrectangle中不起作用“'我已尝试将contains方法添加到接口,然后通过在每个形状类中调用super类方法来重写它,但也不起作用。'为什么不起作用,您遇到了什么错误?我尝试调用super();但不起作用。我试着调用此。contains(),我想这确实有效,但我相信这是一个堆栈溢出异常。我相信我也尝试了Ellipse2D.contains()。当您在MyShape
中创建contains()
方法时,您将需要实际实现MyRectangle
上的功能,例如如果(所有4个角内的x和y)
因此,在实际形状中,您将拥有界面中的方法,但完全实现,并具有计算它的逻辑,因为很明显,找出椭圆如何包含某些内容与矩形有很大不同。因此在侧面MyShape
中,您将有类似于公共布尔包含(int x,int y)的内容在您的其他形状中,公共布尔包含(intx,inty){//code,以确定它是否包含}
当您尝试将包含()
添加到MyShape
时,您是如何覆盖它的?您编写的代码是什么。因为这似乎是您的想法正确,但是包含()
方法在MyLine、MyEllipse和MyRectangle中不起作用,当您说“我尝试将contains方法添加到接口中,然后通过在每个shape类中调用super类方法来重写它,但也不起作用。”为什么不起作用,您遇到了什么错误?我尝试调用super();这不起作用。我尝试调用此.contains(),我认为它确实起作用,但我相信它会给我带来堆栈溢出异常。我相信在创建contains()时,我也尝试了Ellipse2D.contains()
方法在MyShape
中,您将需要实际实现MyRectangle
上的功能,例如if(所有4个角内的x和y)
因此,在实际形状中,您将拥有界面中的方法,但完全实现,并具有计算它的逻辑,因为很明显,找出椭圆如何包含某些内容与矩形有很大不同。因此在侧面MyShape
中,您将有类似于公共布尔包含(int x,int y)的内容;
在其他形状中,公共布尔包含(intx,inty){//code以确定它是否包含}