[英]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.