Java 5.0新特性:

  • 枚举:
enum Grade{  --> 相当于类
A("80~100"),B("70~80"),C("60~70"),D("59~0");  -->相当于调用枚举的构造函数
private String value;
private Grade(String value){
this.value = value;
}

  枚举还可以定义抽象方法,并直接在枚举中以匿名内部类方式实例化,如:

A("80~100"){
public void gradeclass(){
system.out.println("优");
}
}
  • Junit测试插件:可以通过Junit对某个类中的方法进行单独测试,只要在方法名前面加入@Test即可。也可以加入@TestBefore和@Testafter测试整体。-->Before和After会在每个@Test测试方法之前和之后运行。另外,Junit还会有断言功能,如:Assert.
  • Map的迭代遍历:注意-增强for循环只适合显示数据,不适合修改数据。
Map map = new LinkedHashMap();
map.put(....);
....;
....;
for(Object obj : map.entrySet()){
map.Entry = (Entry)obj;
String key = (String)obj.getKey();
String value = (String)obj.getValue();
}
也可以是:
for(Iterator it = map.entrySet().iterator();it.hasNext();){
map.Entry = (Entry)it.next();
String key = (String)obj.getKey();
String value = (String)obj.getValue();
}
  • 反射技术:

    • 反射得到字节码:

      • Class clazz = Class.forName("cn.bestsonic.demo.Person");
      • Class clazz = new Person().getClass();
      • Class clazz = Person.class;
    • 反射生成对象:
Class clazz = Class.forName("cn.bestsonic.demo.Person");  //解剖类的构造函数,并创建对象
Constructor c = clazz.getDeclearConstructor(参数列表);
Person p = (Person)c.newInstance(参数列表);

    若构造函数是私有的,则需要使用c.setAccessible(true)来暴力访问。

    参数列表为类型,要写String.class,int.class等。

    • 反射类方法:
Class clazz = class.forName("cn.bestsonic.demo.Person");  //反射类的方法并运行该方法
Method m = clazz.getDeclearMethod("方法名",参数列表字节码文件);
Person p = new Person(); //调用方法一定需要对象
m.invoke(p,参数列表实例);

    也要注意暴力访问。

    • 反射主函数:
Class clazz = Class.forName("cn.bestsonic.demo.Person");  //反射main方法
Method m = clazz.getMethod("main",String[].class);
m.invoke(null,new Object[]{new String{"aa","bb"}});

      jdk1.5兼容1.4,会优先将main(new String[]{"aa","bb"})拆分成main(string,string);造成参数错误,所以采用两重包装方式,使其自动拆分出String[]。也可以使用(Object)String[]{....}

    • 反射类成员:
Field f = clazz.getDeclearField("age");
f.get(new Person()); //获取字段的值
f.getType(); //获取字段的类型
  • 内省技术:Introspector --> 专用于javabean封装数据

  什么是javabean? --> 封装用户数据的类。什么是javabean的属性? --> 由get set组合数决定,包括从父类Object中继承出来的(Object类中有getClass()方法,也算是一个属性)。

    • 获取bean的属性:
BeanInfo = Intrspector.getBeanInfo(Person.class);    //这里可再传入Object.class来去除父类得到的属性
PropertyDescriptor[] pds = info.getPropertyDescriptors();
可以通过属性描述器,获取属性名,属性的类型以及Get,Set方法,具体方法分别为:
pds.getName(),getPropertyType(),getReadMethod(),getWriteMethod()
    • Beanutils框架:

      • 导入jar包的过程:

        • 新建folder -> lib文件夹。
        • 将beanutils开发包导入lib文件夹中。
        • 将记录日志的支持jar包commons-logging包导入。
        • 右键导入的jar包,选择Build Path导入,Add to Build Path(加入到开发环境中)。
      • 使用:
Person p = new Person();
Beanutils.setProperty(p,"name","zhangsan");
Beanutils.setProperty(p,"age","34"); //String自动转换为int

  注意:Beanutils只支持String和八种基本类型之间的转换,如果想要让Beanutils支持自定义类型,可以使用转换器:ConvertUtils.register(Converter转换器,自定义类型字节码,如Data.class);然后用匿名内部类的方式实现Converter接口的convert方法,实现相应的转换方法。

  注意:详细可以参考Beanutils的手册,可以找到已经写好的DataLocalConverter转换器。

      • 可以使用Beanutils.populate方法将用户提交的Map填充至封装类(Person)中。

Java WEB —— Java提升的更多相关文章

  1. Java Web基础入门

    前言 语言都是相通的,只要搞清楚概念后就可以编写代码了.而概念是需要学习成本的. Java基础 不用看<编程思想>,基础语法看 http://www.runoob.com/java/jav ...

  2. [原创]java WEB学习笔记01:javaWeb之tomcat的安装和配置

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. Java web开发了解

    1.什么是Java web项目? F.A.Q: 服务器 服务器,也称伺服器,是提供计算服务的设备.由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力.服务器的构 ...

  4. java 面试,如何提升自己的实力,摘自 java web轻量级开发面试教程

    本内容摘自 java web轻量级开发面试教程 其中有一段讲述到了实习经验对找工作的帮助 1.2.2大学阶段的实习经验能帮到你 一般公司在筛选简历时,一个非常重要考察的要点是相关经验的工作年限,说一个 ...

  5. java WEB开发入门

    WEB开发入门 1 进入web JAVASE:标准- standard   JAVA桌面程序 GUI    SOCKET JAVAEE:企业-浏览器控制  web 2 软件结构 C/S :client ...

  6. 转:Java Web应用中调优线程池的重要性

    不论你是否关注,Java Web应用都或多或少的使用了线程池来处理请求.线程池的实现细节可能会被忽视,但是有关于线程池的使用和调优迟早是需要了解的.本文主要介绍Java线程池的使用和如何正确的配置线程 ...

  7. Java Web编程技术学习要点及方向

    学习编程技术要点及方向亮点: 传统学习编程技术落后,应跟著潮流,要对业务聚焦处理.要Jar, 不要War:以小为主,以简为宝,集堆而成.去繁取简 Spring Boot,明日之春(future of ...

  8. 深入分析Java Web技术内幕(修订版)

    阿里巴巴集团技术丛书 深入分析Java Web技术内幕(修订版)(阿里巴巴集团技术丛书.技术大牛范禹.玉伯.毕玄联合力荐!大型互联网公司开发应用实践!) 许令波 著   ISBN 978-7-121- ...

  9. 《轻量级Java Web整合开发入门SSH》 - 快速理解Java框架的又一积木

           学习JAVA不难,难的是没有多余的时间给你仔细学习.       伴随着项目的不断跟进,责任重于泰山,必须快速提升.       我不能期望把一本书或者一个项目完全吃透,只希望能用数量去 ...

随机推荐

  1. iOS 7 如何关闭已打开的应用(App)

    刚升级了 iOS 7,感觉不太会用了. 在多任务状态下,看着一个个已被打开的应用,不知道如何关闭了. 问了下朋友才知道,在多任务状态下,将对应的应用 向上划 就行. 听说,和 Android 一样的 ...

  2. linux 系统 tar 的用法详解

    [root@localhost xu]# tar --help 用法: tar [选项...] [FILE]... GNU ‘tar’ 将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还 ...

  3. [HDOJ2512]一卡通大冒险(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 给一个数n,问1~n这n个数内的划分.设dp(i,j)为i划分为j个集合时有多少个. 初始化条件 ...

  4. linux vi 编辑器命令

    游标控制 h 游标向左移 j 游标向下移 k 游标向上移 l (or spacebar) 游标向右移 w 向前移动一个单词 b 向后移动一个单词 e 向前移动一个单词,且游标指向单词的末尾 ( 移到当 ...

  5. STL笔记(6)标准库:标准库中的排序算法

    STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...

  6. UVa 247 Calling Circles【传递闭包】

    题意:给出n个人的m次电话,问最后构成多少个环,找出所有的环 自己想的是:用map来储存人名,每个人名映射成一个数字编号,再用并查集,求出有多少块连通块,输出 可是map不熟,写不出来,而且用并查集输 ...

  7. UVa 10935 Throwing cards away I【队列】

    题意:给出 n张牌,从上往下编号依次为1到n,当牌的数目至少还剩下2张时,把第一张牌扔掉,然后把新的一张牌放在牌堆的最底部,问最后剩下的那一张牌是哪一张牌. 模拟队列的操作------- #inclu ...

  8. 指针数组vs数组指针 指针函数vs函数指针

    在分辨这些重要的概念时,我们先回顾一下前面所讲的C之三值合一,由于三个值所求出的地址是相同的,所以经常有传言说他们都是首元素的地址.这种说法是不正确的.为什么说它是不正确的呢? 首先定义一个指针,将三 ...

  9. 解读 Windows Azure 存储服务的账单 – 带宽、事务数量,以及容量

    经常有人询问我们,如何估算 Windows Azure 存储服务的成本,以便了解如何更好地构建一个经济有效的应用程序.本文我们将从带宽.事务数量,以及容量这三种存储成本的角度探讨这一问题. 在使用 W ...

  10. 工作流Activiti5流程变量 任务变量 setVariables 跟 setVariablesLocal区别

    工作流Activiti5流程变量 任务变量 setVariables 和 setVariablesLocal区别 因为网上的资料比较少.结合源码把相关API写下来. 设置流程级别变量: runtime ...