简体   繁体   English

Java-泛型问题

[英]Java - issue with generics

How do I properly design this, so it would work: 我该如何正确设计它,这样就可以工作:

In class Property<E> : Property<E>类中:

public void addPropertyChangedListener(OnPropertyChangedListener<E> listener) {
    listeners.add(listener);
}

In class ViewModelBase : ViewModelBase类中:

public void addPropertyChangedListener(String propertyName, OnPropertyChangedListener<?>   listener) {
    Property<?> property = properties.get(propertyName);
    property.addPropertyChangedListener(listener); // I get error here
}

Error I get: 错误我得到:

The method addPropertyChangedListener(Property.OnPropertyChangedListener<capture#5-of ?>)
in the type Property<capture#5-of ?> is not applicable for the arguments
(Property.OnPropertyChangedListener<capture#6-of ?>)
public void <T> addPropertyChangedListener(String propertyName, OnPropertyChangedListener<T>   listener) {
    Property<T> property = (Property<T>)properties.get(propertyName);
    property.addPropertyChangedListener(listener);
}

There is no way to avoid an unchecked cast warning if Properties is a heterogeneous collection. 如果“ Properties是一个异构集合,则无法避免未经检查的强制转换警告。 How does it even make sense (in a type system as weak as that of Java) to statically typecheck something whose type can only be known at runtime? (在像Java这样薄弱的类型系统中)对类型只能在运行时知道的事物进行静态类型检查甚至有什么意义?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM