有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您必须编写一个属性转换器,它可以将MyCustomCass的实例转换为字符串,也可以将字符串转换为MyCustomClass实例

    您必须实现的接口是com.install4j.api.beaninfo.PropertyConverter。一旦实现了属性转换器,就可以在BeanInfo类的构造函数中注册它,如下所示:

    setPropertyConverters(new PropertyConverter[] {propertyConverters});