java.lang.UnsupportedOperationException:RectangleReadOnly:在创建Rectangle对象时,此Rectangle是只读的

时间:2017-03-23 05:45:46

标签: java itext unsupportedoperation

我收到java.lang.UnsupportedOperationException:RectangleReadOnly:这个Rectangle是只读的。 当我尝试创建一个Rectangle对象然后旋转它时获取异常。 使用的jar文件是-com.lowagie.text-2.1.7.jar

Rectangle pg = PageSize.getRectangle("LETTER");
    if (isLandscape) pg = pg.rotate(); (exception coming on this line)
    if (!TextOp.isEmpty(pageBGColor)) {
      pg.setBackgroundColor(PDFUtil.getColor(pageBGColor));
    }
    document_ =  new Document(pg);

1 个答案:

答案 0 :(得分:0)

当你这样做时

Rectangle pg = PageSize.getRectangle("LETTER");

根据a search on GitHub for RectangleReadOnly,它返回对类static final Rectangle的对象实现的预定义RectangleReadOnly的引用。这是Rectangle的专门化,强制执行自己的不变性,因此您无法修改您可以要求的“常量”命名矩形。

尝试改为

Rectangle pg = new Rectangle(PageSize.getRectangle("LETTER"));

创建一个不可变Rectangle对象的可变克隆。

可以说这是图书馆中的一个错误。它应该为你做对象克隆。