java如何将自定义类属性设置为自定义操作?
今天,我想创建一个自定义安装操作,其中包含一个自定义类的实例作为属性。定制类由install4j的Set Varaible操作实例化,因此它也被设置为安装上下文。现在我想把这个实例传递给一个自定义操作。因此,我用getter()和setter()方法实现了操作,并创建了相应的ActionBeanInfo类。如果将IDE中的操作放入项目配置中,则无法为自定义类的配置字段设置任何值。也许我必须为我的自定义类实现某种属性转换类?我查看了示例代码,但没有找到任何解决方案。那我怎么才能得到这份工作呢
AbstractInstallAction实施:
public class MyCustomAction extends AbstractInstallAction {
private MyCustomClass instance;
@Override
public boolean install(InstallerContext installerContext) throws UserCanceledException {
...
// do some stuff with the MyCustomClass instance
...
}
public MyCustomClass getMyCustomClass() {
return instance;
}
public void setMyCustomClass(MyCustomClass instance) {
this.instance= instance;
}
}
行动beanInfo实施:
public class MyCustomActionBeanInfo extends ActionBeanInfo {
private static final String PROPERTY_CUSTOM_CLASS = "myCustomClass";
public MyCustomActionBeanInfo () {
super("Custom Action.", "This action will do some custom stuff.", null,
true, false, null, MyCustomAction.class);
addPropertyDescriptor(create(PROPERTY_CUSTOM_CLASS, getBeanClass(), "Custom class",
"Sets the custom class to do some custom stuff during installation."));
}
}
# 1 楼答案
您必须编写一个属性转换器,它可以将
MyCustomCass
的实例转换为字符串,也可以将字符串转换为MyCustomClass
实例您必须实现的接口是
com.install4j.api.beaninfo.PropertyConverter
。一旦实现了属性转换器,就可以在BeanInfo类的构造函数中注册它,如下所示: