电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java定義受限制的類型參數操作

瀏覽:40日期:2022-08-26 13:02:56

有時您可能想限制可以在參數化類型中用作類型參數的類型。 例如,對數字進行操作的方法可能只希望接受Number或其子類的實例。 這就是有界類型參數的用途。

受限制參數類型的方法示例

要聲明有界類型參數,請列出類型參數的名稱,后跟extends關鍵字,然后是其上限,在本例中為Number

請注意,在這種情況下,extends通常用于表示“擴展”(如在類中)或“實現”(如在接口中)。

package generics;/** * 定義受限制的方法 * * @author psdxdgK1DT * */public class Box<T> {private T t;public void set(T t) {this.t = t;}public T get() {return t;}/** * 通過修改我們的通用泛型方法以包含此有界類型參數,現在編譯將失敗,因為我們對inspect的調用仍包含String: * By modifying our generic method to include this bounded type parameter * compilation will now fail, since our invocation of inspect still includes a String: * inspect:單詞:檢查 * @param <U> * @param u */public <U extends Number> void inspect(U u) {System.out.println('T:' + t.getClass().getName());System.out.println('U:' + u.getClass().getName());}public static void main(String[] args) {Box<Integer> integerBox = new Box<Integer>();integerBox.set(new Integer('some text'));integerBox.inspect('some test');這里會出現預編譯錯誤integerBox.inspect(10);}}

在顯示器上會出現紅色的波浪線表示編譯錯誤

java定義受限制的類型參數操作

如果強行編譯則會報錯:

program run result:

Exception in thread “main” java.lang.Error: Unresolved compilation problem: The method inspect(U) in the type Box is not applicable for the arguments (String)

at generics.Box.main(Box.java:36)

譯文:

未解決的編譯錯誤

Box類的inspect(U)方法不可應用于(String)類型參數

使用受限類型參的類可調用受限邊界方法

除了限制可用于實例化泛型類型的類型外,有界類型參數還允許您調用在邊界中定義的方法:

//使用受限類型參數的類public class NaturalNumber<T extends Integer> { private T n; public NaturalNumber(T n) { this.n = n; } public boolean isEven() { return n.intValue() % 2 == 0; } // ...}

isEven方法通過n調用Integer類中定義的intValue方法。

多重受限邊界(Multiple Bounds)

The preceding example illustrates the use of a type parameter with a single bound, but a type parameter can have multiple bounds:

<T extends B1 & B2 & B3> A type variable with multiple bounds is a subtype of all the types listed in the bound. If one of the bounds is a class, it must be specified first. For example:

Class A { /* … / } interface B { / … / } interface C { / … */ }

class D <T extends A & B & C> { /* … */ } If bound A is not specified first, you get a compile-time error:

class D <T extends B & A & C> { /* … */ } // compile-time error

泛型算法

有界類型參數是實現泛型算法的關鍵??紤]下面的方法,該方法計算數組T[]中大于指定元素elem的元素數。

public static <T> int countGreaterThan(T[] anArray, T elem) { int count = 0; for (T e : anArray) if (e > elem) // compiler error ++count; return count;}The implementation of the method is straightforward,but it does not compile because the greater than operator (>) applies only to primitive typessuch as short, int, double, long, float, byte, and char. You cannot use the > operator to compare objects. To fix the problem, use a type parameterbounded by the Comparable<T> interface:public interface Comparable<T> { public int compareTo(T o);}The resulting code will be:public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) { int count = 0; for (T e : anArray) //因為這里的T是受限制的類型參數,實現了Comparable接口,于是可以使用接口的方法compareTo if (e.compareTo(elem) > 0) ++count; return count;}

以上這篇java定義受限制的類型參數操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 天长市晶耀仪表有限公司| 北京乾茂兴业科技发展有限公司 | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | 联系我们-腾龙公司上分客服微信19116098882 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 福州甲醛检测-福建室内空气检测_环境检测_水质检测-福建中凯检测技术有限公司 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 劳动法网-专业的劳动法和劳动争议仲裁服务网 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 济南律师,济南法律咨询,山东法律顾问-山东沃德律师事务所 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | 万家财经_财经新闻_在线财经资讯网 | 短信营销平台_短信群发平台_106短信发送平台-河南路尚 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 佛山市德信昌电子有限公司| 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 湖州织里童装_女童男童中大童装_款式多尺码全_织里儿童网【官网】-嘉兴嘉乐网络科技有限公司 | 14米地磅厂家价价格,150吨地磅厂家价格-百科| 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 | 新能源汽车教学设备厂家报价[汽车教学设备运营18年]-恒信教具 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 奥运星-汽车性能网评-提供个性化汽车资讯 | ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | bkzzy在职研究生网 - 在职研究生招生信息咨询平台 |