做网站1万多块钱,企业品牌网站建设方案,电子商务网站建设与管理课后答案,公司手机网站Java面向对象设计 - Java泛型约束
无限通配符
通配符类型由问号表示#xff0c;如#xff1f; 。
对于通用类型#xff0c;通配符类型是对象类型用于原始类型。
我们可以将任何已知类型的泛型分配为通配符类型。
这里是示例代码:
// MyBag of String type
M…Java面向对象设计 - Java泛型约束
无限通配符
通配符类型由问号表示如 。
对于通用类型通配符类型是对象类型用于原始类型。
我们可以将任何已知类型的泛型分配为通配符类型。
这里是示例代码:
// MyBag of String type
MyBagString stringMyBag new MyBagString(Hi);// You can assign a MyBagString to MyBag? type
MyBag? wildCardMyBag stringMyBag;通配符通配类型中的问号例如表示未知类型。
当您使用通配符声明参数化类型作为参数类型时这意味着它不知道它的类型。
MyBag? unknownMyBag new MyBagString(Hello);上限通配符
我们表示通配符的上限
? extends T这里T是一种类型。 extends T表示任何类型为T或其子类是可接受的。
例如上限可以是数字类型。 如果我们通过任何其他类型该类型是数字类型的子类很好。但是不是Number类型或其子类型的任何东西都应该在编译时被拒绝。 使用上限作为数字我们可以将方法定义为
class MyBagT {private T ref;public MyBag(T ref) {this.ref ref;}public T get() {return ref;}public void set(T a) {this.ref a;}
}public class Main {public static double sum(MyBag? extends Number n1,MyBag? extends Number n2) {Number num1 n1.get();Number num2 n2.get();double sum num1.doubleValue() num2.doubleValue();return sum;}}不管你为n1和n2传递什么它们将始终与Number的赋值兼容因为编译器确保传递给sum()方法的参数遵循其声明中指定的规则 ? extends Number。 下限通配符
指定下限通配符与指定上限通配符相反。
使用下限通配符的语法是 super T这意味着“任何是T的超类型”。
class MyBagT {private T ref;public MyBag(T ref) {this.ref ref;}public T get() {return ref;}public void set(T a) {this.ref a;}
}
public class Main {public static T void copy(MyBagT source, MyBag? super T dest) {T value source.get();dest.set(value);}
}以上内容