不兼容的类型错误Java

时间:2015-02-10 01:51:24

标签: java incompatibletypeerror

所以,我有这行代码

ScreenCapture.main(String[].class);

在文件“1”中,它链接到此文件“2”

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;

class ScreenCapture
{
   public static void main (String args[]) throws
        AWTException, IOException
   {
      System.out.print(".");
      BufferedImage screencapture = new Robot().createScreenCapture(
            new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );
      Expo.delay(2000);
      System.out.print(".");
      File file = new File("Agreement.jpg");
      ImageIO.write(screencapture, "jpg", file);
      Expo.delay(4000);
      System.out.print(".");
   }
}

这是我在文件1中得到的错误

WarandPeace.java:21: error: incompatible types: Class<String[]> cannot be
converted to String[]

我的最终目标是在用户完成文件1中的特定操作时截取屏幕截图。我有截屏文件工作(文件2),但无论我做什么,该错误仍然令人讨厌(文件1)。任何解决方案?

3 个答案:

答案 0 :(得分:4)

您的错误不言自明。 String数组类与String数组本身不同。但更重要的是,如果您希望其他代码使用它,那么代码不应该是静态主方法,因为main方法应该用于启动程序,而不是用于实用程序方法。学习正确的OOPS概念,创建类并调用适当对象的非静态方法。如果这是我的代码,我会创建一个方法来捕获屏幕并让它返回一个BufferedImage。然后其他代码可以决定如何处理BufferedImage。

答案 1 :(得分:1)

文件2中的方法具有以下签名:

public static void main (String args[]) throws
        AWTException, IOException

你需要匹配它。你可以做到,例如这样:

ScreenCapture.main(new String[] {"param1", "param2"});

或者,因为您根本没有使用参数,所以您可以:

ScreenCapture.main(new String[] {});

虽然我同意the other的回答......

答案 2 :(得分:0)

修改&#34;文件1&#34;。

ScreenCapture.main(String[].class);

应该是

String[] args = { "one" }; // <- for one.

String[] args = new String[0]; // <- for none.

然后

ScreenCapture.main(args);

main()采用String(s)数组(不是Class<String[]>的类型String[])。

最后,在一行 -

ScreenCapture.main(new String[] {"one", "two"});