当前位置: 首页 > news >正文

长春怎么注册网站平台好用的快速网站建设平台

长春怎么注册网站平台,好用的快速网站建设平台,如何打百度人工电话,wordpress 代码块样式文/陈刚 2005-11-09 一、前言 泛型这个词在现在的JAVA挺时髦#xff0c;光从字面上你是无法知道它代表些什么东东的#xff0c;所以我们还是不要从字面去理解#xff0c;而是从一些实例去了解它吧。 二、泛型之前的日子 #xff2a;#xff24;#xff2b;#xff11;.… 文/陈刚 2005-11-09  一、前言   泛型这个词在现在的JAVA挺时髦光从字面上你是无法知道它代表些什么东东的所以我们还是不要从字面去理解而是从一些实例去了解它吧。 二、泛型之前的日子   .4之前是没有泛型的概念的所以我们才会有下面的代码: List list new ArrayList(); list.add(aaaa); list.add(bbbb); list.add(cccc); for (Iterator it list.iterator(); it.hasNext();) { String str (String) it.next(); System.out.println(str); }   上面是一段很平常的代码在一个List集合加入一些字符串然后再用一个遍历循环把它打印出来。“String str (String) it.next()”这一句我们可以看到List取出值都是Object所以我们要得String型还要做一个类型转换真是麻烦。更麻烦的是list.add(Object obj)的参数是Object类型所以如果我们一不小心把list.add(cccc);写成list.add(new Integer(76));程序在循环打印的类型转换中就会出错。   问题我们能不能让add方法只认String型呢 回答可以用JDK5.0的泛型。 三、泛型后的幸福生活   JAVA有了泛型后就象十年的老光棍讨了老婆那个好处自不待言。我们来看看上面的例子改成泛型的写法是怎么样的 ListString list new ArrayListString(); list.add(aaaa); list.add(bbbb); list.add(cccc); for (IteratorString it list.iterator(); it.hasNext();) { String strit.next(); System.out.println(str); }   看到差别了吗泛型其实很简单就是在定义类型的后面加上类型这样子的声明就行了它主要还有以下差别 list.add方法只能接受String类型。list.add(new Integer(76))这样的语句不需要运行程序在编译时就会检查通不过。it.next()的返回值不再是Object而变成了String  当然我们其实在循环部份也可以象下面这么写是不是简洁了很多呢 :-) ListString list new ArrayListString(); list.add(aaaa); list.add(bbbb); list.add(cccc); for (String str : list) { System.out.println(str); }   当然需要说明的是List不仅可以ListString也可以是ListInteger等等其他任何类型。 四、更深入了解泛型 层层推进的泛型声明   “ListList list;”表示什么呢就是只接收List型的参数比如         ListList list new ArrayListList();list.add(new ArrayList());list.add(new Vector());list.add(new LinkedList());   这里要注意List是接口ArrayList、Vector、LinkedList都是这一接口下的实现类。下面这个有点怪异了“ListListString list;”表示它只接受List型的参数而且这种List型的参数又是只是只接受String型有点层层推进的味道在里面了。         ListListString list new ArrayListListString();list.add(new ArrayListString());list.add(new VectorString());list.add(new LinkedListString()); 使用泛型上限通通配符extends   这里要着重强调一点变量的泛型声明和方法的参数的泛型声明有很大差别。   变量声明成某类型同时也可以接受它的子类。比如说Integer、Long、Float都是抽象类Number的子类所以下面的代码一点问题也没有         ListNumber list new ArrayListNumber();list.add(new Integer(1));list.add(new Long(1));list.add(new Float(1.2));   但如果换成方法参数的泛型声明则要严格得多了子类也是不行的。比如下面的代码就是错误的因为printList参数只接受Number值的List就是是Number子类的Integer值的List也不行。     public static void main(String[] args) {ListInteger list new ArrayListInteger();list.add(new Integer(1));list.add(new Integer(2));printList(list);}private static void printList(ListNumber list){for (Number num : list) {System.out.println(num);}}  上面代码修改的方法有两个如下 修改方法一改变量的泛型声明 将 ListInteger list new ArrayListInteger(); 改为 ListNumber list new ArrayListNumber(); 修改方法二用界限通配符改方法参数的泛型声明 将 printList(ListNumber list) 改为 printList(List? extends Number list) 说明extends 的含义就是表示参数可以接受Number型的子类。 使用泛型下限通通配符super     在上限就有下限下限行就是super用法和extends一样含义则和extends相反。比如printList(List? super Integer list)表示参数可以接受Integer型及Integer型的超类即Number了当然也包括Object这个顶级类。 配置符   表示可以接受任何类型不过我觉得它用得不多因为printList(List? list)和printList(List list)的作用是一样的。 五、创建一个支持泛型的类 创建一个泛型的类 public class PointT {T x;T y;     public T getX() {return x;}     public T getY() {return y;}     public void setX(T x) {this.x x;}     public void setY(T y) {this.y y;} }   使用这个类的代码如下         PointInteger p new PointInteger();p.setX(new Integer(1));p.setY(new Integer(2));PointString b new PointString();b.setX(1);b.setY(2);   说明在PointT的定义中T并非关键字你也可以这样定义PointABC当然一般还是写T吧简单也规范。 泛型类的继承与实现   java.util.Comparator类是JDK里用来排序的其源代码如下 package java.util; public interface ComparatorT {int compare(T o1, T o2);boolean equals(Object obj); }    一个实现此接口的类如下     public class MyComparatorT implements ComparatorObjectInstance {public int compare(ObjectInstance o1, ObjectInstance o2) {String s1 o1.getObjectName().getCanonicalName();String s2 o2.getObjectName().getCanonicalName();return s1.compareToIgnoreCase(s2);}}   说明ObjectInstance可能大家还太明白这是我实际项目中的一段代码关于的ObjectInstance全称javax.management.ObjectInstance。MyComparator的使用代码如下 Set set ......省略 ListObjectInstance mbeans new ArrayListObjectInstance(set); Collections.sort(mbeans, new MyComparatorObjectInstance()); 六、最后的感言   JAVA有了泛型就象老光棍讨了老婆好处大大的但和女人一样麻烦也跟着来了它的严格类型检查使隐藏的更少。有些地方确实也使代码简洁了有些地方却会使得代码更复杂。所以运用之妙在于是否用得适当尽量把泛型往简单里用别越搞越复杂了。  参考资料 J2SE 5.0中的泛型 http://www.matrix.org.cn/resource/article/43/43634_java_generics.html 作者简介 陈刚广西桂林人著作有《Eclipse从入门到精通》 您可以通过其博客了解更多信息和文章http://www.ChenGang.com.cn
http://www.zqtcl.cn/news/567275/

相关文章:

  • 奉贤网站建设专家高端自适应网站设计
  • 网站正在建设中 动态徐州网站建设方案咨询
  • 广东世纪达建设集团有限公司官方网站专业电商网站开发
  • 抚顺建设网站自适应网站建设推荐
  • 做网站的大公司手机页面
  • 网站建设的公司实习做什么系统设计
  • 兰州网站设计哪个平台好外贸网站定制公司哪家好
  • 做网站需要先买域名吗在线音乐网站开发数据库
  • 深圳优化网站搬家网站模板
  • 网站建设做的人多吗门户网站制作建设
  • 哪个网站可以做logo怀柔网页公司制作
  • 网站被抄袭怎么投诉网站建设丨金手指15
  • 中国交建平台seo搜索引擎优化是通过优化答案
  • 简述网站的建设流程图食品网站app建设方案
  • 西安建设厅网站首页听说上海又要封了
  • 兼职python做网站如何制作一个网站包含多个网页
  • 花园桥网站建设百度怎么创建网站
  • 做网站 客户一直要求改做网站学不需要做后台管理系统
  • 企业网站托管电话输入姓名查询个人征信
  • 域名注册了后怎么建设网站荆州市建设厅网站
  • 厦门网站建设合同wordpress的设置网址
  • 澎湃动力网站建设公司门户类网站建设需要多少钱
  • 祭祖网站怎么做咨询类网站开发的意义
  • 简书网站开发热门电影推荐
  • 中学教材数字化学习资源的建设——教材配套网站的设计及发展趋势建网站 发信息 做推广
  • 怎么写网站建设方案书制做网站的公司
  • 服务网站 建设原则游戏服务器租用多少钱一年
  • 软件网站下载现在出入深圳最新规定
  • 长宁专业网站制作公司陕西网站建设哪家专业
  • 重庆做的好的房产网站衡水的网站建设