我正在用Java编写图形库。它将成为几个现有Java图形包的前端,结合了java.awt和javax.swing的功能。我是一名老师,我正在为我的初学生创建这个图书馆,这样他们就不必再用进口声明来躲避。我还想提供一些额外的内置颜色,以增加java.awt.Color附带的有限集合
我希望创建一个只扩展java.awt.Color的Color类。这样,学生就不必直接导入java.awt.Color。我试过这个:
package graphics;
public class Color extends java.awt.Color
{
}
但编译会引发错误cannot find symbol - constructor Color()
。显然java.awt.Color类缺少默认构造函数,这导致我的类编译失败。
我是否只需咬紧牙关并编写自己的Color类并包含一些方法来在java.awt.Colors和我的Colors之间进行翻译?
答案 0 :(得分:3)
是的,java.awt.Color没有默认的构造函数,所以你必须创建至少一个构造函数来调用超级构造函数:
public class Color extends java.awt.Color{
public Color(int rgb) {
super(rgb);
}
}
答案 1 :(得分:1)
我会回答这个例子:
public class Color extends java.awt.Color {
public final static Color AZURE = new Color(240,255,255);
public static Color colorOf(String color) {
try {
return (Color)Color.class.getDeclaredField(color).get(null);
} catch(Exception notAvailable) {
System.out.println("RGB color " + color + " is not a predefined " +
"static color.");
return null;
}
}
}