Java 将方法添加到内置类
我很确定这是行不通的,但我会继续祈祷,祈求上帝保佑 我正在尝试向内置类添加一个方法。我希望这个方法能够被所有内置类的子类调用。具体而言: 我有一个Java 将方法添加到内置类,java,inheritance,extends,code-reuse,Java,Inheritance,Extends,Code Reuse,我很确定这是行不通的,但我会继续祈祷,祈求上帝保佑 我正在尝试向内置类添加一个方法。我希望这个方法能够被所有内置类的子类调用。具体而言: 我有一个JButton、一个JTextPane和其他JComponents。我希望能够将JDom元素而不是矩形传递到setBounds()。我目前的解决方案是使用所需的方法扩展每个JComponent子类,但这是大量重复的代码。是否有一种方法可以只编写一次以下方法,并在所有JComponent对象上调用它?还是要求我单独扩展每个子类,并复制和粘贴下面的方法 p
JButton
、一个JTextPane
和其他JComponents
。我希望能够将JDom元素
而不是矩形
传递到setBounds()
。我目前的解决方案是使用所需的方法扩展每个JComponent
子类,但这是大量重复的代码。是否有一种方法可以只编写一次以下方法,并在所有JComponent对象上调用它?还是要求我单独扩展每个子类,并复制和粘贴下面的方法
public void setBounds(Element element) {
this.setBounds(Integer.parseInt(element.getAttribute(
"x").toString()), Integer.parseInt(element
.getAttribute("y").toString()), Integer
.parseInt(element.getAttribute("width").toString()),
Integer.parseInt(element.getAttribute("height")
.toString()));
}
我建议采用以下方法。为元素类(称为ComponentElement)编写包装器,如下所示
class ComponentElement{
private Element e;
public ComponentElement(Element e)
{
this.e = e;
}
public int getX()
{
return Integer.parseInt(e.getAttribute("x").toString());
}
//similar methods like getY(),getWidth(),getHeight() etc..
}
然后,无论您想在哪里设置组件的边界
ComponentElement e = new ElementWrapper(element)
component.setBounds(e.getX(),e.getY(),e.getWdith(),e.getHeight());
这将删除您必须重复的大部分锅炉板代码(getAttribute/Integer.parseInt等)
它不涉及静态方法。方法就在它们所属的地方。(getX方法属于ComponentElement类。如果你选择静态方法,你会把它放在哪里?某个“Util”类?你会如何命名?还有哪些方法属于同一个类?)
编辑:
或者更好
class ComponentElement{
private Element e;
public ComponentElement(Element e)
{
this.e = e;
}
Public Rectangle getRectangle()
{
return //a rectangle based on the attributes
}
}
及
有了继承,你就不必写太多重复的东西了code@JigarJoshi我知道的唯一方法是为我使用的JComponent的每个子类编写重复的代码。除非我遗漏了什么?这是绝对可能的,但我强烈建议不要这样做,因为几乎总是有一种方法可以重新设计代码以避免这种需要。有什么原因不能将
元素
解析为一个矩形
并直接使用它吗?我认为这似乎是一种很好的静态实用方法。可能公共静态JComponent setBounds(JComponent comp,Element Element)
),然后导入静态
,最后调用setBounds(this,Element)代码>
component.setBounds(new ComponentElement(element).getRectangle());