Java参数类型,java未对参数类型定义运算符
如何解决写爬虫IP受阻的问题?立即使用。
【相关学习推荐:java基础教程】
有时,您可能希望限制可在参数化类型中用作类型参数的类型。例如,对数字进行操作的方法可能只想接受数字或其子类的实例。这就是有界类型参数的用途。
受限制参数类型的方法示例
要声明有界类型参数,请列出类型参数的名称,后跟extends关键字,然后是它的上限,在本例中是Number。
请注意,在这种情况下,extends通常用于表示“扩展”(如在类中)或“实现”(如在接口中)。
包泛型;
/**
*定义受限方法。
*
* @作者psdxdgK1DT
*
*/
公共类BoxT {
私人T t
公共无效集(T t) {
this.t=t
}
public T get() {
return t;
}
/**
*通过修改我们的泛型方法来包含这个有界类型参数,现在编译将会失败,因为我们对inspect的调用仍然包含字符串:
*通过修改我们的泛型方法来包含这个有界类型参数
*编译现在将失败,因为我们的inspect调用仍然包含一个字符串:
*检查:单词:检查
* @param U
* @param u
*/
公共U扩展号码无效检查(U u) {
system . out . println( T: T . getclass()。getName());
system . out . println( U: U . getclass()。getName());
}
公共静态void main(String[] args) {
box integer integer box=new box integer();
integerBox.set(新整数( some text ));
integerBox.inspect(“某个测试”);将会出现预编译错误。
integerbox . inspect(10);
}
}显示屏上将出现一条红色波浪线,指示编译错误。
如果强制编译,将会报告一个错误:
译文:
未解决的编译错误
Box类的inspect(U)方法不能应用于(String)类型参数\
使用受限类型参的类可调用受限边界方法
除了限制可用于实例化泛型类型的类型之外,有界类型参数还允许您调用在边界中定义的方法:
//使用受限类型参数的类
公共类NaturalNumberT扩展整数{
私人T n;
public natural number(T n){ this . n=n;}
公共布尔值isEven() {
return n . int value()% 2==0;
}
//.isEven方法通过n调用Integer类中定义的intValue方法。
多重受限边界(Multiple Bounds)
泛型算法
有界类型参数是实现遗传算法的关键。考虑下面的方法,它计算数组T[]中大于指定元素elem的元素数。
public static T int count greater than(T[]a array,T elem) {
int count=0;
for (T e : anArray)
if (e elem) //编译器错误
数数;
返回计数;
}
该方法的实现很简单,
但是它不会编译,因为大于运算符()只适用于基元类型
例如short、int、double、long、float、byte和char。
不能使用运算符来比较对象。若要解决此问题,请使用类型参数
受ComparableT接口限制:
公共接口比较表{
public int compare to(T o);
}
结果代码将是:
public static T扩展comparable T int count greater than(T[]a array,T elem) {
int count=0;
for (T e : anArray)
//因为这里的t是一个受限类型参数,并且实现了Comparable接口,所以可以使用compareTo接口方法。
if (e.compareTo(elem) 0)
数数;
返回计数;
}以上是java如何定义受限类型参数的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。