- 浏览: 11203 次
- 性别:
- 来自: 江苏
文章分类
最新评论
@version 1.0 2011.01.10
1,引言
→基础+学习能力
→ide工具开发配置(Eclipse)
java、javac的jdk版本
→知识面(java ee IDE jms jmx jndi...)、jdk5/jdk6新特性
2,jdk5新特性要摘
import static 导入一个类中的某个或所有静态方法
(import 导入一个类或包中所有类)
→overload vs override
→可变参数 ...(隐藏数组)
→增加for循环 (实现Iterable接口的集合类)
for(VariableModifiers Type Identifier:Expression)statement
→自动拆装箱autoboxing/unboxing(将对象中的基本数据形态信息从对象中自动取出,隐藏细节)
说明:http://www.talentdigger.cn/home/space-6-do-blog-id-2368.html
→享元模式(flyweight)
3,枚举 enum
→说明和应用:http://tech.e800.com.cn/articles/2009/97/1252286198897_1.html
→eg
----------------------------------
import java.util.Date;
public class EnumTest {
public static void main(String[] args) {
WeekDay1 weekDay = WeekDay1.MON;
System.out.println(weekDay.nextDay());
WeekDay weekDay2 = WeekDay.FRI;
System.out.println(weekDay2);
System.out.println(weekDay2.name());
System.out.println(weekDay2.ordinal());
System.out.println(WeekDay.valueOf("SUN").toString());
System.out.println(WeekDay.values().length);
}
public enum WeekDay{
SUN(1),MON(),TUE,WED,THI,FRI,SAT;
private WeekDay(){System.out.println("first");} //带有构造函数
private WeekDay(int day){System.out.println("second");}
}
public enum TrafficLamp{
RED(30){ //带有抽象方法
public TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN(45){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){this.time = time;}
}
}
→单成员枚举可以作为单例实现方式
5,反射★
→Class类 描述Java程序中的Java类,代表Java类在内存中的字节码
类.class\对象.getClass()\Class.forname("类名")
→数组类型实例对象 Class.isAarry
→反射 把Java中的各种成分映射成相应的Java类
Field、Method、Constructor、Package等
→构造方法反射Constructor
//new String(new StringBuffer("abc")); //需求:反射生成字符串abc
Constructor constructor = String.class.getConstructor(StringBuffer.class);
String str = (String)constructor.newInstance(/*"abc"*/new StringBuffer("abc"));
System.out.println(str.charAt(2));
→成员变量反射Field
//需求:反射获得成员变量的值
ReflectPoint pt1 = new ReflectPoint(3,5);
Field fieldY = pt1.getClass().getField("y");
//fieldY不是对象身上的变量,而是类上,要用它去取某个对象上对应的值
System.out.println(fieldY.get(pt1));
Field fieldX = pt1.getClass().getDeclaredField("x"); //私有
fieldX.setAccessible(true); //暴力反射
System.out.println(fieldX.get(pt1));
→成员方法反射Method
//TestArguments.main(new String[]{"111","222","333"});//需求:反射调用循环显示数组内容成员方法
String startingClassName = args[0];
Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
//mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}});
mainMethod.invoke(null, (Object)new String[]{"111","222","333"});
→面向对象的专家模式
→数组反射以及数组与Object的关系
----------------------------------
int [] a1 = new int[]{1,2,3};
int [] a2 = new int[4];
int[][] a3 = new int[2][3];
String [] a4 = new String[]{"a","b","c"};
System.out.println(a1.getClass() == a2.getClass());
System.out.println(a1.getClass() == a4.getClass()); //*
System.out.println(a1.getClass() == a3.getClass()); //*
System.out.println(a1.getClass().getName());
System.out.println(a1.getClass().getSuperclass().getName());
System.out.println(a4.getClass().getSuperclass().getName());
Object aObj1 = a1;
Object aObj2 = a4;
//Object[] aObj3 = a1;
Object[] aObj4 = a3;
Object[] aObj5 = a4;
System.out.println(a1);
System.out.println(a4);
System.out.println(Arrays.asList(a1));
System.out.println(Arrays.asList(a4));
//打印传入内容
printObject(a4);
printObject("xyz");
private static void printObject(Object obj) {
Class clazz = obj.getClass();
if(clazz.isArray()){
int len = Array.getLength(obj);
for(int i=0;i<len;i++){
System.out.println(Array.get(obj, i));
}
}else{
System.out.println(obj);
}
}
----------------------------------
→ArrayList vs HashSet、HashCode分析(哈希算法)
→eg HashSet机制和内存泄漏
Collection collections = new HashSet();
ReflectPoint pt1 = new ReflectPoint(3,3);
ReflectPoint pt2 = new ReflectPoint(5,5);
ReflectPoint pt3 = new ReflectPoint(3,3);
collections.add(pt1);
collections.add(pt2);
collections.add(pt3);
collections.add(pt1);
pt1.y = 7;
collections.remove(pt1); //内存泄漏
→开发框架原理的理解(反射的应用)
发表评论
-
Java实例分析-银行业务调度系统
2011-01-13 08:49 2738@version 2010.01.13 →实 ... -
Java实例分析-交通灯管理系统
2011-01-12 15:50 1644@version 1.0 2011.01.12 @versi ... -
Java 类加载器、动态代理类等(系列下)
2011-01-12 02:10 908@version 1.0 2011.01.12 9 ... -
Java 内省、注解、泛型等(系列中)
2011-01-12 00:34 1146@version 1.0 2011.01.12 ... -
Java 输入输出(IO)与网络编程
2011-01-09 17:52 1332@version 1.0 2011.01.08 IO/输 ... -
Java基础知识点自检、线程等
2011-01-07 01:16 1226@version 1.0 2011.01.06 @versi ...
相关推荐
java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名。本项目为普通java项目
java基础,反射枚举基础,自己总结的笔记。
Java——枚举: enum关键字、Enum类 类集对枚举的支持——EnumMap类与EnumSet类 枚举类实现接口、在枚举类中定义抽象方法 Java反射机制: Class类、Class类的使用 反射的应用:取得类的结构
例子中很好的体现了java中枚举的使用技巧和简单反射的实现过程
这里枚举类型有自己的反射方式: 这里我先总结下逻辑: 1. 通过getEnumConstatnts返回目前枚举中存在的对象。 2. 通过getMehod获取方法。 3. 最后用这个对象调用其方法。 程序运行截图如下: 其中对应的枚举: ...
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)...进阶篇有反射、泛型、注解、网络编程、多线程、序列化、数据库、Servlet、JSP、XML解析、单例模式与枚举。本专栏主要为Java入门者提供实验参考。
通过枚举反向给实体类赋值工具类,减少表单提交时通过request.getParameter(name)方式获取提交值的重复操作
深入了解java反射机制的原理,通过反射机制可以破坏单例模式,如何防止通过反射机制拿到单例模式的构造器呢?用枚举类可破
采用java 应用程序的方式搭建简单的jdbc项目,JDBC简单入门之枚举(Enum)、泛型、反射、JDBC整合
泛型+枚举+反射学习笔记
实验十一 Java 枚举类型的应用 18 实验十二 Java 集合框架程序设计应用 22 实验十三 Java 反射与注解程序应用 31 实验十四 Java 数据库程序设计应用 36 实验十五 Java Swing 图形用户界面程序设计应用 43 实验十六 ...
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 ...第13章 Java反射 第14章 网络编程
Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 ...第13章 Java反射 第14章 网络编程
反射,枚举,IO流,正则表达式,线程,模式,泛型
jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)...进阶篇有反射、泛型、注解、网络编程、多线程、序列化、数据库、Servlet、JSP、XML解析、单例模式与枚举。本专栏主要为Java入门者提供实验参考。
FileList.java 自己实现的一个文件名称枚举类 MyDataIO.java 数据输入输出示例 MyFileOutput.java 将键盘读入的文字保存到文件 MyPipedIO.java 管道流示例 MySequenceIn.java 顺序输入流示例 ObjectFileTest....
CoreJava DAY01 Java概述 1 ...CoreJava DAY16 反射、注释 57 CoreJava DAY17 GUI 64 CoreJava DAY18 awt event 81 CoreJava DAY19-20 多线程 85 CoreJava DAY21-22 IO 95 CoreJava DAY23 网络编程 107
这本书从初学者的角度,以丰富的实例、案例,通俗易懂的语言,简单的...需要理解或掌握的多线程、泛型、枚举、Java反射机制、Annotation、Eclipse开发工具;需要了解或掌握的图形界面、Java网络编程、Java新IO等内容。
JAVA8个人练习,异常,常用类,枚举,泛型,io流,网络编程,反射,动态代理等等