java - 矩形对象抛出错误,说它在java中找不到.contains()方法

标签 java vector applet rectangles

我试图在 mouseClicked 中编写一段代码,删除从 vector 中单击的任何矩形。所有矩形都正确存储在 vector 中,并且当我运行程序时,我正在检查的点是有效的。查看文档,确实有一个 rectangle.contains(point) 方法,所以我不确定为什么以下代码片段无效。谢谢!

public void mouseClicked(MouseEvent m)
    {

      Point p = new Point(m.getPoint());
      Vector v = ball.r; //ball.r is where they are put into in another object's method
      boolean done = false;
      int i = 0;

      while (!done)
      {
        if(v.elementAt(i).contains(p))
        {
          v.removeElement(i);
          i--; //prevent i from incrementing
        }
        i++;
      }
    }

此外,我没有在 for 循环中执行此操作,因为据我所知,当删除元素时, vector 将“重新打包”,并且我将跳过 vector 的元素。不确定我这样说/这样做是对还是错。

最佳答案

由于您已将Vector v定义为原始类型 vector ,因此它不知道其中元素的类型,即v.elementAt(i),因此无法查找匹配的 contains() 方法。这就是问题的原因。

你有两个选择。在定义 Vector 时使用泛型,或者在调用 contains() 方法之前对元素进行类型转换

例如

 Vector<Rectangle> v  = (Vector<Rectangle>)ball.r;

 if(((Ractangle)v.elementAt(i)).contains(p))

关于java - 矩形对象抛出错误,说它在java中找不到.contains()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223571/

相关文章:

java - 如何处理 Activity 标题随 Fragment 变化的情况

java - 停止 ExecutorService 任务中的无限循环

仅在 Visual Studio 中出现 C++ `vector iterators incompatible` 错误

c++ - 将 std::vector 与 std::thread 一起使用

java - 将类添加到 Param 标签 - Java Applet

java - 使用 ConcurrentLinkedQueue 会导致错误

java - 为什么在 hashmap 中使用 Linkedlist?为什么不使用 List 的其他实现?

c++ - 在 C++ 函数中调整 vector 大小

java - 带有 JNLP 小程序的 Plone CMS

java - ZipInputStream 和 JarInputStream 的 ZipEntry 大小不一致