我很担心答案在某个地方,但要么我缺少正确的关键词,要么干脆睡一觉,但答案是这样的;~):
我需要扩展BufferedImage,实现这个w/o MacGyvering的唯一方法是让新类在java.awt.image中休息,因为它包含一个只能访问包的可视字段。诺马利,我们有理由不这么做,但如果你查一下消息来源,你会发现在这种特殊情况下,情况并非如此。
因此,我测试了它,它编译,它似乎运行。
但我能依赖它吗?允许这样做吗?有什么东西可以阻止我在java的预定义系统包中添加类吗?或者这仅仅是一种正确的方法,却没有人告诉我?
更新
已经提供的答复说明了法律问题的可能性(如果做正确的事情意味着违反某些法律,而不是我的默认解决方案,那就是经常对这些法律不感兴趣;-)以及在超级阶级中改变行为的可能性(在这种情况下很不可能)。如果仅此而已,我就这么做了,…
UPDATE2
太棒了!Java是一个受保护的包名…。所以我真的需要MacGyver这个…
UPDATE3
我只是想知道为什么我不能得到属性散列键。fn getPropertyNames就是这样描述的:返回一个由getProperty(String)…识别的名称数组让我们看看源代码:
public String[] getPropertyNames() {
return null;
}我读过的最好的代码…
发布于 2011-03-24 12:25:13
你不能在java.awt.Image中“添加”。在您自己的包中,您可以扩展类并按自己的意愿进行操作。
有时,在开放源码项目中,您可以将类提交回项目,并使其成为项目的一部分。
https://stackoverflow.com/questions/5418999
复制相似问题