---------------------- android培训 java培训 期待与您交流! ----------------------
什么是框架,例如,我们要写程序扫描.java文件中的注解,要解决哪些问题:读取每一样,在每一个中查找@,找到的@再去查询一个列表,如果@后的内容出现在了列表中,就说明这是一个我能处理和想处理的注解,否则,就说明它不是一个注解或者说至少不是一个我感兴趣和能处理的注解。接着就编写处理这个注解的相关代码。现在sun提供了一个apt框架,它会完成所有前期工作,只需要我们提供能够处理的注解列表,以及处理这些注解的代码。Apt框找到我们感兴趣的注解后通知或调用我们的处理代码去处理。
你做的门调用锁,锁是工具,你做的门被房子调用,房子是框架,房子和锁都是别人提供的。
程序中不处理异常,而是main方法声明抛出异常,便于大家可以集中看主要的关键代码。
Class类也提供getResourceAsStream方法的比喻:如果你每次都找我给你商店买可乐,那我还不如直接向你买可乐,即直接提供一个买可乐的方法给你。
publicstaticvoidmain(String[]args)throwsException{
//应该先直接用ArrayList和HashSet,然后才引入从配置文件读,这样便于学员学习。
Propertiesprops = newProperties();
//先演示相对路径的问题
//InputStreamips= new FileInputStream("config.properties");
/*一个类加载器能加载.class文件,那它当然也能加载classpath环境下的其他文件,既然它有如此能力,它没有理由不顺带提供这样一个方法。它也只能加载classpath环境下的那些文件。注意:直接使用类加载器时,不能以/打头。*/
//InputStreamips= ReflectTest2.class.getClassLoader().getResourceAsStream("cn/itcast/javaenhance/config.properties");
//Class提供了一个便利方法,用加载当前类的那个类加载器去加载相同包目录下的文件
//InputStreamips= ReflectTest2.class.getResourceAsStream("config.properties");
InputStreamips= ReflectTest2.class.getResourceAsStream("/cn/itcast/javaenhance/config.properties");
props.load(ips);
Ips.close();
StringclassName=props.getProperty("className");
Classclazz=Class.forName(className);
Collectioncollection= (Collection)clazz.newInstance();
//Collectioncollection= newArrayList();
ReflectPointpt1 =newReflectPoint(3,3);
ReflectPointpt2 =newReflectPoint(5,5);
ReflectPointpt3 =newReflectPoint(3,3);
collection.add(pt1);
collection.add(pt2);
collection.add(pt3);
collection.add(pt1);
System.out.println(collection.size());
}
---------------------- android培训 java培训 期待与您交流! ----------------------