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

网站怎么注销主体济南济阳哪有做网站的

网站怎么注销主体,济南济阳哪有做网站的,网页广告调词平台,番禺厂家搜索seo在Java5后推出了泛型,使我们在编译期间操作集合或类时更加的安全,更方便代码的阅读,而让身为编译性语言的Java提供动态性的反射技术,更是在框架开发中大行其道,从而让Java活起来,下面看一下在使用泛型和反射需要注意和了解的事情 1.Java的泛型是类型擦除的 Java中的泛型是… 在Java5后推出了泛型,使我们在编译期间操作集合或类时更加的安全,更方便代码的阅读,而让身为编译性语言的Java提供动态性的反射技术,更是在框架开发中大行其道,从而让Java活起来,下面看一下在使用泛型和反射需要注意和了解的事情 1.Java的泛型是类型擦除的      Java中的泛型是在编译期间有效的,在运行期间将会被删除,也就是所有泛型参数类型在编译后都会被清除掉.请看以下例子  Java代码    publicstaticvoid test(List  testParameter) {   }   publicstaticvoid test(List  testParameter) {   }         以上是一个最最简单的重载例子,在编译后泛型类型是会被擦除的,所以无论是List 或List 都会变成List ,所以参数相同,重载不成立,无法编译通过,而且读者可以尝试将不同泛型的类getClass()看看,他们的Class是一样的  2.不能初始化泛型参数和数组      请观察以下代码  Java代码    class Test  {   //编译不通过 private T t  new T();   //编译不通过 private T[] tArray  new T[5];   //编译通过 private List  list   new ArrayList ();   }         Java语言是一门强类型,编译型的安全语言,它需要确保运行期的稳定性和安全性,所以在编译时编译器需要严格的检查我们所声明的类型,在编译期间编译器需要获取T类型,但泛型在编译期间已经被擦除了,所以new T()和new T[5]都会出现编译错误,而为什么ArrayList却能成功初始化?这是因为ArrayList表面是泛型,但在编译期间已经由ArrayList内部转型成为了Object,有兴趣的读者可以看一下ArrayList的源码,源码中容纳元素的是private transient Object[] elementData,是Object类型的数组 3.强制声明泛型的实际类型      在使用泛型时,在大多数情况下应该声明泛型的类型,例如该集合是存放User对象的,就应该使用List 来声明,这样可以尽量减少类型的转换,若只使用List而不声明泛型,则该集合等同于List 4.注意泛型没有继承说      请看以下例子  Java代码    publicstaticvoid main(String[] args) {   // 编译不通过     List // or     List }         上面代码的业务逻辑为有一组元素,但我不确定元素时整形还是浮点型,当我在确定后创建对应的泛型实现类,刚接触泛型的读者有可能会犯以上错误,理解为泛型之间是可以继承的,例如声明Object的泛型实际上创建Integer泛型,错误认为泛型之间也存在继承关系,但这是不正确的,泛型是帮助开发者编译期间类型检查安全.我们可以换种方式实现以上业务逻辑  Java代码    publicstaticvoid main(String[] args) {   //Number 为Integer 和 Double 的公共父类     List  numberList   new ArrayList ();   //使用通配符,代表实际类型是Number类型的子类     Listextends Number numberList2  new ArrayList ();   //or     Listextends Number numberList3  new ArrayList ();   }   5.不同场景使用不同的通配符     泛型当中支持通配符,可以单独使用 ? 来表示任意类型,也可以使用刚才上面例子中的extends关键字表示传入参数是某一个类或接口的子类,也可以使用super关键字表示接受某一个类型的父类型,extends和super的写法一样,extends是限定上界,super为限定下界 6.建议采用顺序为List List List       以上三者都可以容纳所有的对象,但使用的顺序应该是首选List ,然后List,最后才使用List 7.使用多重边界限定      现在有一个业务需求,收钱时需要是我们本公司的员工(继承User),同时亦需要具备收银员的功能(实现Cashier),此时我们当然可以想到接受1个User然后判断User是否实现了Cashier接口,但在泛型的世界中,我们可以怎么做?请看以下例子  Java代码    publicstatic   extends User  Cashier  void CollectMoney(T t){   }         以上例子就表明,限定了上界,只要是User和Cashier的子类才可以作为参数传递到方法当中 我是泛型和反射的分界线8.注意Class类的特殊性      Java语言是先把Java源文件编译成后缀为class的字节码文件,然后通过ClassLoader机制把类文件加载到内存当中,最后生成实例执行的,在描述一个类是,Java使用了一个元类来对类进行描述,这就是Class类,他是一个描述类的类,所以注定Class类是特殊的       1.Class类无构造函数,Class对象加载时由JVM通过调用类加载器的         defineClass方法来构造Class对象       2.Class类还可以描述基本数据类型,由于基本类型并不是Java中的对象,它们         一般存在于栈,但Class仍然可以对它们进行描述,例如使用int.class       3.其对象都是单例模式,一个Class的实现对象描述一个类,并且只描述一个类         所以只要是该被描述的类所有对象都只有一个Class实例       4.Class类是Java反射的入口 9.适时选择getDeclaredXXX和getXXX      Class类中提供了很多getDeclaredXXX和getXXX的方法,请看以下例子  Java代码    publicstaticvoid main(String[] args) {       Class  cls  User. class;   //获取类方法     cls.getDeclaredMethods();       cls.getMethods();   //获取类构造函数     cls.getDeclaredConstructors();       cls.getConstructors();   //获取类属性     cls.getDeclaredFields();       cls.getFields();   }         getXXX的方式是获取所有公共的(public)级别的,包括从父类继承的方法,而getDeclaredXXX的方式是获取所有的,包括公共的(public),私有的(private),不受限与访问权限, 10.反射访问属性或方法时将Accessible设置为true      在调用构造函数或方法的invoke前检查accessible已经是公认的写法,例如以下代码  Java代码    publicstaticvoid main(String[] args) throws Exception {       Class  cls  User. class;   //创建对象     User user  cls.newInstance();   //获取test方法     Method method  cls.getDeclaredMethod(test);   //检查Accessible属性 if(!method.isAccessible()){           method.setAccessible(true);       }       method.invoke(user);   }         读者可以尝试获取Class的getMethod,也就是公开的方法,再输出isAccessible,可以看到输出的其实也是false,其实因为accessible属性的语义并不是我们理解的访问权限,而是指是否进行安全检查,而安全监察是非常消耗资源的,所以反射提供了Accessible可选项,让开发者逃避安全检查,有兴趣的读者可以查看AccessibleObject类观察其源码了解安全检查. 11.使用forName动态加载类      forName相信各位读者不会陌生,在使用JDBC时要动态加载数据库驱动就是使用forName的方式进行加载,同时亦可以从外部配置文件中读取类的全路径字符串进行加载,在使用forName时,被加载的类就会被加载到内存当中,只会加载类,并不会执行任何代码,而我们的数据库驱动就是利用static代码块来执行操作的,因为当类被加载到内存中时,会执行static代码块 12.使用反射让模板方法更强大      模板方法的定义是,定义一个操作的算法骨架,将某些步骤延迟到子类当中实现,而实现细节由子类决定,父类只决定骨架,以下是一个传统模板方法的事例  Java代码    publicabstractclass Test {   publicfinalvoid doSomething() {           System.out.println(start...);           doInit();           System.out.println(end.....);       }   protectedabstractvoid doInit();   }       此时子类只需要继承Test类实现doInit()方法即可嵌入到doSomething中,现在我们有一个需求,若我在doSomething中需要调用一系列的方法才能完成doSomething呢?而且我调用方法的数量并不确定,只需遵从某些规则则可将方法添加到doSomething方法当中.请看以下代码  Java代码    publicabstractclass Test {   publicfinalvoid doSomething() throws Exception {           Method[] methods  this.getClass().getDeclaredMethods();           System.out.println(start...);   for (Method method : methods) {   if (this.checkInitMethod(method)) {                   method.invoke(this);               }           }           System.out.println(end.....);       }   privateboolean checkInitMethod(Method method) {   // 方法名初始是否为init return method.getName().startsWith(init)   // 是否为public修饰                  Modifier.isPublic(method.getModifiers())   // 返回值是否为void                  method.getReturnType().equals(Void.TYPE)   // 是否没有参数                  !method.isVarArgs()   // 是否抽象类型                  !Modifier.isAbstract(method.getModifiers());       }   }         看到上面的代码,读者是否有似曾相识的感觉?在使用Junit3时是不是只要遵守方法的签名约定,就能成为测试类?使用这种反射可以让模板方法更强大,下次需要使用多个方法在模板方法中时,不要创建多个抽象方法,尝试使用以上方式 13.不要过分关注反射的效率      反射的效率是一个老生常谈的问题,普通的调用方法,创建类,在反射的情况下需要调用诸多API才能实现,效率当然要比普通情况下低下,但在项目当中真正引起性能问题的地方,绝大数不会是由反射引起的,而反射带给我们的却是如此的美妙,当今的各系列开源框架,几乎都存在反射的身影,而且大量存在更比比皆是,让Java这个沉睡的美女活起来的,非反射莫属 总结:       笔者在本文章中只从《改善Java程序的151建议》中提取部分进行归纳性叙述,推荐各位读者购买这本书,该书不仅从事例中学习,而且涉及到原理,底层的实现,不仅告诉你应该怎么做,还告诉你为什么要这样做.
http://www.pierceye.com/news/326421/

相关文章:

  • 食品网站建设 网站定制开发微网站建设的第一步是进行首页的设置
  • 一站式装修公司有哪些500人在线网站建设配置
  • 郴州网站制作哪个网站可以做市场调研报告
  • 劲松网站建设公司做运营需要具备什么能力
  • 企业建设网站是网络营销吗17网站一起做网店新塘
  • 电子书籍网站开发重庆网站建设快速建站
  • 广州 企业网站建设公司网页设计模板
  • 长安网站建设制作价格乐清网站
  • 小游戏网站怎么做建站徐州seo代理计费
  • 苏州网站建设数据网络淘宝网店怎么运营起来
  • 网站建设项目实战实训报告凡科建网站
  • 网站建设程序编制做网站优化的教程
  • 已有网站 需要整改 怎么做信息网官网
  • 中石建基础设施建设有限公司网站南阳网站建设的公司
  • 广东建设银行网站营销渠道策略
  • 廊坊开发区规划建设局网站网站域名续费一年多少钱
  • 网站建设需要哪些准备国外网站顶部菜单设计
  • 免费域名注册和免费建站深圳品牌沙发
  • php网站开发就业网站开发研究综述
  • 华升建设集团有限公司网站网站如何做那种诱导广告
  • 做资讯网站要什么手续科技设计公司网站模板下载
  • 西安互联网网站建设湘潭网站建设设计
  • 微网站开发方案模板前程无忧招聘网下载app官网
  • 网站推广方式大全如何写软文赚钱
  • 同城同镇网站建设做幼儿网站的目标
  • 上饶网站建设兼职辽宁沈阳做网站
  • 阳江企业网站好的外包公司
  • 深圳做分销商城网站我有域名跟空间能教我做网站吗
  • 网站子目录做推送用什么网站
  • 网站手机优化网站上传空间的ip地址