contains
方法可以用在我自己编写的类的实例上吗?
我已经创建了一个名为Ana
的类,而在另一个类中,我创建了两个名为cookie
和maccaroni
的实例。这是其中之一:
Ana cookie = new Ana(cc.c, 20, 450);
在某些时候我试图调用
if (maccaroni.contains(cookie.image(), cookie.xi(), cookie.yi())
{
return true;
}
但Netbeans强调它表明存在错误。当我盘旋它时,它说:
no suitable method found for contains(Image,int,int) method Component.contains(int,int) is not applicable (actual and formal argument lists differ in length) method Component.contains(Point) is not applicable (actual and formal argument lists differ in length) method JComponent.contains(int,int) is not applicable (actual and formal argument lists differ in length)
为什么以下代码被Netbeans视为错误?
这是我所指的课程。
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JComponent;
public class Ana extends JComponent
{
public static Image p;
public static int xx;
public static int yy;
public Ana(Image io, int x, int y)
{
p = io;
xx = x;
yy = y;
repaint();
}
@Override
public void paint(Graphics g)
{
g.drawImage(p, xx, yy, null);
}
public Image image()
{
return p;
}
public int xi()
{
return xx;
}
public int yi()
{
return yy;
}
}
答案 0 :(得分:3)
contains()
中没有定义Ana
方法。 contains()
中定义了JComponent
方法。它需要两个整数。你试图用图像和两个整数来调用它。您可以通过这样编写来获得所需内容:
if (maccaroni.contains(cookie.xi(), cookie.yi())
{
return true;
}
因此,此代码中的错误类型是:它是编译错误。 NetBeans不只是强调它,屏幕上的某个地方会显示一条消息,告诉您哪里出了问题。您可能必须将鼠标悬停在下划线上或查看屏幕的其他部分 - 我不会定期使用NetBeans,所以我不记得确切 - 但我向您保证信息就在那里。
不,你不能在任何对象上调用contains()
,只能在类定义contains()
方法(具有适当参数)的对象上,或者继承这样的对象来自其中一个超类型的方法(来自他们实现的祖先类或接口)。
所有对象都可以使用的方法是从java.lang.Object
类继承的方法,因为所有类都显式或隐式地扩展它(父类的父类的父类...最后需要扩展Object
类) 。
但contains(Image, int, int)
上没有定义java.lang.Object
方法。 contains()
类的实例可用的唯一Ana
方法是从JComponent
继承的contains(int, int)
。int
。如您所见,它接受两个Image
参数,这会阻止您将其与其他p
参数一起使用。
顺便说一下,正如@PShemo所说,您的字段xx
,yy
和private
可能应该是static
,而且肯定不是 #!/usr/bin/env python
list1 = [ 'one', 'two', 'three' ]
list2 = [ 'I', 'II', 'III', 'IV', 'V' ]
for word in list1:
print word + " from list1"
for roman in list2:
print roman + " from list2"
for ( word, roman ) in (list1 list2):
if word:
print word + " from list1"
if roman:
print roman + " from list2"
。