- 浏览: 195205 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
atgoingguoat:
Spring Cloud 现状目前,国内使用 Spring C ...
SpringCloud2 从入门 -
zssapple:
taskList.jsp 中的问题解决:if(${sessio ...
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子 -
793059909:
很详细
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限) -
aa00aa00:
一个中国移动的系统,呵呵,报错来的,现在调试好了
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限) -
小fi(FD):
楼主有考虑过用非关系型数据库实现吗?如果用非关系型数据库,对于 ...
动态表单分析
下面简单的列出Java5和Java6的主要新特性。
Java5:
1。泛型 Generics :
引入泛型之后,允许指定集合里元素的类型,面去了强制类型转换,并得到强类型在编译时刻进行类型检查的好处。
不光是类型安全,Parameterized Type作为参数和返回值,Generic是vararg、annotation、enumeration、collection等功能的基石
a, 类型安全
抛弃List、Map,使用List<String>、Map<Integer, String>
给List、Map添加元素或者使用Iterator<T>遍历时,编译期就可以给你检查出类型错误
b, 方法参数和返回值统统加上Type
抛弃List getStringListFromIntegerList(List list)
使用List<String> getgetStringListFromIntegerList(List<Integer> list)
c, 不再需要类型转换
List<String> l = new ArrayList<String>()
String s = l.get(i)
d, 类型通配符
假设一个打印List<T>中元素的方法printList,我们希望任何类型T的List<T>都可以被打印:
代码
1. public void printList(List<?> list, PrintStream out) throws IOException {
2. for (Iterator<?> i = list.iterator(); i.hasNext(); ) {
3. out.println(i.next().toString());
4. }
5. }
类型通配符"?"让我们的printList方法更通用
e, 限制类型参数
如果通配符?让我们的参数类型过于广泛,我们还可以限制一下它:
代码
1. public void printList(List<? extends Number> list, PrintStream out) throws IOException {
2. for (Iterator<? extends Number> i = list.iterator(); i.hasNext(); ) {
3. out.println(i.next().toString());
4. }
5. }
2。枚举类型 Enumeration:
3。自动类型包装和解包装(autoboxing & unboxing):
public static void main(String[] args) {
int i = 13;
Integer o = new Integer(i);
Integer x = new Integer(13);
int y = x.intValue();
}
}
Java 5
public static void main(String[] args) {
// Boxing
int i = 13;
Integer o = i;
// UnBoxing
Integer x = new Integer(13);
int y = x;
}
}
4。变长参数 varargs ( variable number of arguments)
for (Object obj: objs)
System.out.println(obj);
}
5。Annotations
Annotation是Java中的metadata
A, Tiger中预定义的三种标准annotation
a, Override
指出某个method覆盖了superclass的method
当你要覆盖的方法名拼写出错时编译不通过
b, Deprecated
指出某个method或element类型的使用是被阻止的
子类将不能覆盖该方法
c, SupressWarnings
关闭class、method、field/variable初始化的编译期警告
比如没有List没有使用Generic,则@SuppressWarnings("unchecked")将去掉编译期警告,这对将程序移植到JDK1.4有意义
B, 自定义annotation
public @interface Marked {}
C, meta-annotation
或者说annotation的annotation
四种标准的meta-annotation全部定义在java.lang.annotaion包中:
a, Target
指定所定义的annotation可以用在哪些程序单元上
如果Target没有指定,则表示该annotation可以使用在任意程序单元上
代码
1. @Target({ElementType.ANNOTATION_TYPE,
2. ElementType.CONSTRUCTOR,
3. ElementType.FIELD,
4. ElementType.LOCAL_VARIABLE,
5. ElementType.METHOD,
6. ElementType.PACKAGE,
7. ElementType.PARAMETER,
8. ElementType.TYPE})
9. public @interface TODO {}
b, Retention
指出Java编译期如何对待annotation
annotation可以被编译期丢掉,或者保留在编译过的class文件中
在annotation被保留时,它也指定是否会在JVM加载class时读取该annotation
代码
1. @Retention(RetentionPolicy.SOURCE) // Annotation会被编译期丢弃
2. public @interface TODO1 {}
3. @Retention(RetentionPolicy.CLASS) // Annotation保留在class文件中,但会被JVM忽略
4. public @interface TODO2 {}
5. @Retention(RetentionPolicy.RUNTIME) // Annotation保留在class文件中且会被JVM读取
6. public @interface TODO3 {}
c, Documented
指出被定义的annotation被视为所熟悉的程序单元的公开API之一
被@Documented标注的annotation会在javadoc中显示,这在annotation对它标注的元素被客户端使用时有影响时起作用
d, Inherited
该meta-annotation应用于目标为class的annotation类型上,被此annotattion标注的class会自动继承父类的annotation
D, Annotation的反射
我们发现java.lang.Class有许多与Annotation的反射相关的方法,如getAnnotations、isAnnotationpresent
我们可以利用Annotation反射来做许多事情,比如自定义Annotation来做Model对象验证
代码
1. @Retention(RetentionPolicy.RUNTIME)
2. @Target({ ElementType.FIELD, ElementType.METHOD })
3. public @interface RejectEmpty {
4. /** hint title used in error message */
5. String value() default "";
6. }
7.
8. @Retention(RetentionPolicy.RUNTIME)
9. @Target( { ElementType.FIELD, ElementType.METHOD })
10. public @interface AcceptInt {
11. int min() default Integer.MIN_VALUE;
12. int max() default Integer.MAX_VALUE;
13. String hint() default "";
14. }
使用@RejectEmpty和@AcceptInt标注我们的Model的field,然后利用反射来做Model验证
6。新的迭代语句 (enhanced for loop) for/in
抛弃Iterator吧
- for(int n : numbes) {
- println(n);
- }
- for(String s : stringList) {
- println(s);
- }
自定义实现Iterable接口或继承现有Collection的类来让你的类可以使用for/in
7。静态引入 static imports
就是把其它类的静态方法引入,变成自己的方法。
//无需再写r = Math.sin(Math.PI * 2);
enum元素也可以import
- import static java.lang.System.out;
- import static xx.xx.xx.SomeEnum.*;
8。新的格式化方法 java.util.Formatter
让你拥有C的printf()风格的字符串格式化
9。新的线程模型和并发库 Thread framework
Tiger引进大量全新的并发性功能,更好的支持mutilthread
HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList让我们用的放心、舒心、省心
在大并发量读取时采用java.util.concurrent包里的一些类会让大家满意
BlockingQueue、Callable、Executor、Semaphore...
Java6:
1。引入了一个支持脚本引擎的新框架
2。UI的增强
3。对Web Service支持的增强(JAX-WS 2.0 和 JAXB 2.0)
4。一系列新的安全相关的增强(本地敏感资源服务 Locale Sensitive Services SPI)
5。JDBC 4.0
6。Compiler API
7。通用的Annotations支持
注解(Annotation) 为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后
某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据)。
注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种
注解,定义在java.lang包中。
@Override 表示当前方法是覆盖父类的方法。
@Deprecated 表示当前元素是不赞成使用的。
@SuppressWarnings 表示关闭一些不当的编译器警告信息。
发表评论
-
SpringCloud2 从入门
2019-03-30 09:46 829首先初步认识下它: ... -
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子
2017-09-22 14:58 924JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的 ... -
Maven3的POM.xml元素说明详解
2017-09-20 16:53 970Maven3的POM.xml元素说明 POM代表项目对象 ... -
MyBatis的foreach语句详解
2014-02-10 09:55 887foreach的主要用在构建in ... -
JSP获取所有参数并追加写入文件
2013-12-20 14:53 1133JSP获取所有参数并追加写入文件 <% ... -
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限)
2012-07-19 15:02 3723开发框架选择 Jquery1.6 + strust2.1 ... -
java开源-项目管理工具-java源代码
2012-03-17 15:11 3282因工作需要,想找些项目管理工具,找了一些,都觉得不 ... -
java 常用工具包(自己拓展)
2010-11-16 23:05 2869做了六七年的程序员,突然间发现自己常常去网上找工具类.怎么不自 ... -
请管理员删除此贴
2010-05-18 22:38 200rapid-framework一般的人应该不会陌生,国产的, ... -
Rapid-framework代码自动生成器
2010-05-08 22:36 1583rapid-framework是一个以spring为核心的we ... -
ibatis3 简单示例
2010-05-06 14:36 3170ibatis3 已经发布了。跟ib ... -
Dwr入门例子(附源代码下载-JBuilder2006工程)完成
2010-05-03 15:51 1519Dwr+ibatis+oracle9i入门例子(附源代码下载- ... -
dwr+ibatis+mysql +jsp 权限管理平台源代码
2010-04-15 11:49 2010JBuilder开发的一个权限管理平台源代码,适用于常见的 ... -
Hibernate入门示例(架构图)
2010-04-09 08:55 2445在 Java Web 开发应用中,Hibernate可以作为 ... -
java cms MyEclipse6.0 工程代码
2010-04-07 14:46 2412JEECMS是国内Java版开源网站内容管理系统(java c ... -
ibatis MyEclipse 代码 源代码 分解
2010-01-28 17:03 1567前面,已经发个工程。现在讲下里面代码的具体功能和作用。 我也 ... -
java读取文件及文件流
2010-01-28 16:10 2675package cn.xx.io.util; imp ...
相关推荐
### Java 6新特性 #### 9. **并发工具类(Concurrent Utility Classes)** Java 6引入了`java.util.concurrent`包,提供了线程池、并发集合等工具,帮助开发者更高效、安全地编写多线程代码。 #### 10. **NIO.2...
在JAVA6中,引入了许多新特性,其中一项重要的更新就是JAXB(Java Architecture for XML Binding)的集成。JAXB是一个用于将Java对象和XML数据进行绑定的框架,它允许开发者在Java应用程序中直接操作对象,而无需...
Java 5 和 Java 6 是两个重要的 Java 发行版本,它们引入了一系列的新特性和改进,极大地提升了开发效率和代码质量。下面将详细讲解这两个版本的关键特性。 Java 5: 1. **泛型**:泛型允许在类、接口和方法中使用...
本视频为java8新特性,百度云链接和密码,永久有效,失效联系我
Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性
6. **日期与时间API**:Java8改进了日期和时间的处理,引入了新的java.time包,包含了LocalDate、LocalTime、LocalDateTime、ZonedDateTime等类,提供了更强大且易于使用的日期和时间操作。 7. **Optional类**:...
5. **JDBC 4.0**:Java Database Connectivity (JDBC) API在Java 6中升级到4.0版本,添加了自动连接管理、自动类型映射和获取数据库元数据的新方法,使得数据库操作更加方便。 6. **改进的泛型**:泛型的实现得到了...
java8新特性
自 Java 8 发布后,Java 有了许多显著的新特性,极大地提升了开发效率和代码质量。以下是对 Java 8 及之后版本主要新特性的深入剖析: 1. **Lambda 表达式**: Java 8 引入了 Lambda 表达式,使得函数式编程成为...
本文将深入探讨Java 8的三大关键新特性:接口的默认方法实现、Lambda表达式以及一系列相关的变化。 一、接口的默认方法实现 在Java 8之前,接口只能定义抽象方法,而不能包含具体实现。Java 8引入了默认方法...
Java 7是Java编程语言的一个重大更新,发布于2011年,它引入了许多新的特性和改进,旨在提升开发者的效率和代码的可读性。在这个主题中,我们将深入探讨Java 7的新特性以及Java的高级编程概念。 **1. 多线程并行流...
java5新特性
尚硅谷Java视频Java8新特性视频教程尚硅谷Java视频Java8新特性视频教程尚硅谷Java视频Java8新特性视频教程
尚硅谷_Java11_集合中的新API1 05.尚硅谷_Java11_局部变量类型推断 06.尚硅谷_Java11_集合中的新API2 07.尚硅谷_Java11_流中的新API1 08.尚硅谷_Java11_流中的新API2 09.尚硅谷_Java11_字符串和Optional的新API 10....
2020年的Java 11、12、13和14版本也不例外,这些更新引入了多个引人注目的新特性。下面,我们将详细探讨这些版本中的关键变化。 首先,让我们从Java 11开始,这是长期支持(LTS)版本。其中最重要的新特性是HTTP...
java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述java 8新特性描述,java...
Java 9是Java平台的重大更新,它引入了许多新特性,旨在提升性能、模块化系统以及增强开发者体验。在这个2019年的最新课程讲解中,我们将会深入探讨以下几个关键知识点: 1. **模块化系统(Project Jigsaw)**:这...