我可以在被覆盖的油漆(Graphics)中调用getGraphics()吗?



我正在使用带有自定义函数接口的 lambda 函数来缩短代码中经常出现的一些嵌套循环。因为我不想在我的表达式中添加额外的参数,并在我的代码中以这样的东西结尾:

doubleLoop((int i, int j, Graphics graphics) -> drawHexagonRandomColor(i, j, graphics), g);

我可以调用getGraphics()来获取@Override public void paint(Graphics g) {...}中的图形上下文(而不是使用参数g)而不会产生意外/负面副作用吗?

我可以在我的@Override公共空洞油漆(Graphics g) {...}中调用getGraphics()而不会产生意外/负面的副作用吗?

有什么意义?paint已经提到了Graphics.

当其他人想要使用您的代码时会发生什么? 他们会知道不要在油漆例程的上下文之外调用这些方法吗?

有后果吗? 不是你打算使用它的方式,但是如果你想改用BufferedStrategy而不是标准的绘画程序会发生什么? 如果要将结果绘制到BufferedImage,会发生什么情况?

您已经构建了一个不灵活的解决方案,该解决方案具有自己的危险副作用。 为了保留好处(没有一个额外的参数),您将失去很多灵活性、重用和自我文档。

没有其他人会使用我的代码

这只是重点的一部分,你应该总是挑战自己,假设别人会使用你的代码,这会让你成为一个更好的开发人员,阻止你走捷径或偷工减料。

getGraphics通常只是一个坏主意,应尽可能避免

相关内容

  • 没有找到相关文章

最新更新