运行以下代码:

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) {};

定义了一个子类,没有任何方法被覆盖,因此您所看到的行为。

10-06 10:54