调用没有实例变量的非静态方法

时间:2014-06-09 02:32:12

标签: java

我正在试图找出以下代码。根据Java API,ImageIcone称为“非静态方法”getImage(),没有任何实例变量:

public void paintComponent(Graphics g) {
    Image img = new ImageIcon("imgtest.jpg", "description...").getImage();
    g.drawImage(img,3,4,this);
} 

3 个答案:

答案 0 :(得分:3)

new ImageIcon("imgtest.jpg", "description...")

创建一个实例。在该实例上调用getImage()方法,然后丢失对该实例的所有引用。如果无法访问该对象,则可以对其进行垃圾回收。

请记住,调用实例方法所需的只是一个解析为对象引用的表达式。引用类型的变量是一个这样的表达式。构造函数调用是另一个这样的表达式。调用具有某种引用类型的返回类型的方法也是这样的表达式。

答案 1 :(得分:3)

您不需要'实例变量。'您只需要实例new ImageIcon("imgtest.jpg", "description...")就是实例。

答案 2 :(得分:0)

在您的代码中,您将使用代码new ImageIcon("imgtest.jpg", "description...")创建ImageIcon类的匿名对象。由于您将来不打算使用该对象,这就是您选择创建匿名对象的原因。