类不能被实例化 [英] class can't be instantiated
问题描述
我在使用 Java 小程序和图形时遇到问题.我试图在 Eclipse 中运行它,但它失败了.我是 Java 新手,希望你能帮助我.我有两个文件:Say.java 和 SayWhat.java.说.java:
I have a problem with java applet and graphics. I'm trying to run it in Eclipse and it fails. Im new in java and i hope you can help me. I have two files: Say.java and SayWhat.java. Say.java:
public class Say {
SayWhat word = new SayWhat("Hello World");
}
SayWhat.java:
SayWhat.java:
import java.applet.Applet;
import java.awt.Graphics;
@SuppressWarnings("serial")
public class SayWhat extends Applet {
Graphics g;
String what;
public SayWhat(String what) {
this.what=what;
}
public void paint(Graphics g){
g.drawString(what, 20, 20);
}
}
出现的错误是:
load: SayWhat.class can't be instantiated.
java.lang.InstantiationException: SayWhat
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
你能告诉我我做错了什么吗?
Can you please tell me what am i doing wrong?
推荐答案
applet 需要有一个公共的无参数构造函数(通过有一个显式的公共无参数构造函数,或者根本没有显式的构造函数;在后一种情况,编译器将提供一个公共的无参数构造函数作为默认值).你的类的唯一构造函数接受一个参数:
An applet needs to have a public no-arg constructor (either by having an explicit public no-arg constructor, or by having no explicit constructors at all; in the latter case, the compiler will supply a public no-arg constructor as a default). Your class's sole constructor takes an argument:
public SayWhat(String what) {
所以没有那个参数就不能实例化这个类,所以它不能用作小程序.
so the class can't be instantiated without that argument, so it can't be used as an applet.
这篇关于类不能被实例化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!