您將需要對泛型類型進行綁定。如果其中包含convertToLong
是同一類型參數的類,你可以把綁定的有:
import java.util.*;
public class GenericTest<C extends GenericTest.HasLongProperty> {
static interface HasLongProperty {
long someLongProperty();
}
public long convertToLong(Collection<C> es) {
long a = 0;
for(C sth : es)
a += sth.someLongProperty();
return a;
}
}
或者,如果其中包含convertToLong
是不是通用類,你可以把一個方法的聲明綁定單獨:
import java.util.*;
public class GenericTest {
static interface HasLongProperty {
long someLongProperty();
}
public <C extends GenericTest.HasLongProperty> long convertToLong(Collection<C> es) {
long a = 0;
for(C sth : es)
a += sth.someLongProperty();
return a;
}
}
這是不合法的語法 – newacct 2012-01-31 08:59:36
@newacct,謝謝指出這一點。我更正了語法,並添加了一個額外的示例,顯示了2種不同的方式來聲明所需的泛型綁定。 – 2012-01-31 16:52:26