运行以下代码:
import java.awt.Font;
import java.awt.FontMetrics;
public class MetricsTest {
public static void main(String[] args) {
Font myFontTest=new Font("Arial", Font.PLAIN, 11);
FontMetrics metrics = new FontMetrics(myFontTest) {};
int characterWidth=metrics.charWidth('A');
System.out.println(characterWidth);
}
}
产生此错误:
线程“主”中的异常java.lang.StackOverflowError
在java.awt.FontMetrics.getWidths(FontMetrics.java:430)
在java.awt.FontMetrics.charWidth(FontMetrics.java:333)
在java.awt.FontMetrics.getWidths(FontMetrics.java:430)
在java.awt.FontMetrics.charWidth(FontMetrics.java:333)
在java.awt.FontMetrics.getWidths(FontMetrics.java:430)
等等....
为什么?
最佳答案
从the doc:
这:
FontMetrics metrics = new FontMetrics(myFontTest) {};
定义了一个子类,没有任何方法被覆盖,因此您所看到的行为。