小编arz*_*llo的帖子

swt/jface数据绑定:PojoProperties与PojoObservable

我正在编写一个JFace对话框,我想使用数据绑定到模型对象.

查看代码我可以看到有时我发现PojoProperties用于构建绑定,而有时则使用它PojoObservables.

看着Javadoc,我可以读到:

PojoObservables:一个工厂,用于为POJO(普通的旧Java对象)创建可观察对象,这些对象符合具有getter和setter的对象的想法,但不会在更改时提供属性更改事件.

PojoProperties:一个工厂,用于为POJO(普通旧Java对象)创建属性,这些属性符合具有getter和setter的对象的想法,但不会在更改时提供属性更改事件.

同样的问题适用于BeansObservablesBeansProperties之间存在的差异

(显而易见的)差异是因为observable允许观察对象而属性允许观察属性,但由于Pojo有一个getter和一个setter用于它的数据,它们之间有什么区别?我应该为我的对话选择哪一个?

以下是代码摘录:

POJO:

public class DataObject {
  private String m_value;
  public String getValue() {
    return m_value;
  }
  public void setValue(String i_value) {
    m_value = i_value;
  }
}
Run Code Online (Sandbox Code Playgroud)

DIALOG(相关部分):

@Override
protected Control createDialogArea(Composite parent) {
    Composite container = (Composite) super.createDialogArea(parent);

    m_combo = new Combo(container, SWT.BORDER);
    m_comboViewer = new ComboViewer(container, SWT.NONE);

}
Run Code Online (Sandbox Code Playgroud)

BINDING(相关部分):

    // using PojoObservable
    IObservableValue observeValue = PojoObservables.observeValue(m_dataObject, …
Run Code Online (Sandbox Code Playgroud)

data-binding jface eclipse-databinding

5
推荐指数
1
解决办法
1877
查看次数

如何在java泛型中返回类对象“类型”?

想象一下有一个java类

public class FixedClassOfStrings {

  List<String> myMember=new ArrayList<String>();

  // omissed all non relevant code...

  public Class getMyType() {
    return String.class;
  }
}
Run Code Online (Sandbox Code Playgroud)

如何通过使用 java 泛型使其参数化?

我的尝试失败了:

public class GenericClass<T> {

  List<T> myMember=new ArrayList<T>();

  public Class getMyType() {
    return T.class; // this gives "Illegal class literal for the type parameter T"
  }
}
Run Code Online (Sandbox Code Playgroud)

另外,如何避免在 FixedClassOsStrings 中发出警告:“类是原始类型。对泛型类的引用应该参数化”?可以声明:

  public Class<String> getMyType() {
    return String.class;
  }
  ...
Run Code Online (Sandbox Code Playgroud)

如果没问题,我应该使用泛型返回什么?

  public Class<T> getMyType() {
    return T.class; // this gives "Illegal class literal for the type parameter …
Run Code Online (Sandbox Code Playgroud)

java generics types return class

5
推荐指数
1
解决办法
4万
查看次数