我需要从一个修改过的类(例如From JButton)创建一个对象。此修改包括添加简单方法和实现其他接口,如下所示:
var ec = 0;
$.each($.trim(value).replace(/,$/, '').split(','), $.proxy(function (index, email) {
ec++;
if (!$.validator.methods.email.call(this, $.trim(email), element)) {
valid = false;
}
}, this));
if (ec<1 || ec>10) valid = false;
甚至可能吗?是的,如何实施呢?
我不想为它创建单独的类,特别是当我有一大堆要修改它们时,我不经常使用它们的对象。
答案 0 :(得分:1)
使用抽象类将update
实现为接口:
import javax.swing.JButton;
public abstract class UpdateableJButton extends JButton implements Updateable {
// ...
}
可更新界面:
public interface Updateable {
public void update();
}
现在您可以使用省略update
实现的抽象类:
UpdateableJButton button = new UpdateableJButton() {
@Override
public void update() {
// add specific implementation
}
};
答案 1 :(得分:1)
如果您想使用匿名内部类执行此操作,则需要按如下方式修改Updatable
接口:
interface Updatable<T> {
public void update();
public void setComponent(T t);
}
然后,您可以轻松地为不同的组件创建匿名内部类。
可更新的JButton
Updatable<JButton> updatableButton = new Updatable<JButton>() {
private JButton jButton;
public void setComponent(JButton jButton) {
this.jButton = jButton;
}
public void update() {
jButton.setText("someText");
}
};
updatableButton.setComponent(new JButton());
updatableButton.update();
可更新的JLabel
Updatable<JLabel> updatableJLabel = new Updatable<JLabel>() {
private JLabel jLabel;
public void setComponent(JLabel jButton) {
this.jLabel = jButton;
}
public void update() {
jLabel.setText("someText");
}
};
updatableJLabel.setComponent(new JLabel());
updatableJLabel.update();
您不再需要创建一个您想要的新类。