黑马程序员

黑马程序员——反射

孤街醉人 提交于 2020-04-08 06:46:28
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------- 一、概述 反射技术: 反射技术可以对类进行解剖。 二、应用场景 提供一个配置文件,来供以后实现此程序的类来扩展功能。对外提供配置文件,让后期出现的子类直接将类名字配置到配置文件中即可。该应用程序直接读取配置文件中的内容。并查找和给定名称相同的类文件。进行如下操作: 1)加载这个类。 2)创建该类的对象。 3)调用该类中的内容。 应用程序使用的类不确定时,可以通过提供配置文件,让使用者将具体的子类存储到配置文件中。然后该程序通过反射技术,对指定的类进行内容的获取。 好处:反射技术大大提高了程序的扩展性。    反射就是把Java类中的各种成分映射成相应的java类。 三、Class和class的区别 1)class:Java中的类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性的值是什么,则由此类的实例对象确定,不同的实例对象有不同的属性值。 2)Class:指的是Java程序中的各个Java类是属于同一类事物,都是Java程序的类,这些类称为Class

反射 黑马程序员

萝らか妹 提交于 2020-04-08 04:13:18
public class ReflectTester { public Object copy(Object object) throws Exception { // 获得对象的类型 Class<?> classType = object.getClass(); System.out.println("Class:" + classType.getName()); // 通过默认构造方法创建一个新的对象,new Class[] {} 没参数表示用默认的构造方法 Object objectCopy = classType.getConstructor(new Class[] {}) .newInstance(new Object[] {}); // 获得对象的所有属性,包括私有的 Field fields[] = classType.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; String fieldName = field.getName(); String firstLetter = fieldName.substring(0, 1).toUpperCase(); // 获得和属性对应的getXXX()方法的名字 String

黑马程序员_反射

淺唱寂寞╮ 提交于 2020-04-07 19:27:19
 ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------- 反射 1、由来:   程序后期扩展,无源码修改的扩展 2、java.lang.Class  描述.class的类   java.lang.reflect.Constructor 描述构造方法的类   java.lang.reflect.Field  描述成员变量的类   java.lang.reflect.Method  描述成员方法的类 3、实现反射:   A、获取class文件对象         第一种:通过对象获取       Person p=new Person();       Object中getClass(),返回值是Class类型     第二种:       通过类的静态属性class获取      第三种:通过class类的静态方法forName获取       class.forName("包名.Person");//要写全类名   B、获取构造方法     Class类中Constructor[] getConstructors()

反射 黑马程序员

こ雲淡風輕ζ 提交于 2020-04-07 15:11:09
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---------------------- public class ReflectTester { public Object copy(Object object) throws Exception { // 获得对象的类型 Class<?> classType = object.getClass(); System.out.println("Class:" + classType.getName()); // 通过默认构造方法创建一个新的对象,new Class[] {} 没参数表示用默认的构造方法 Object objectCopy = classType.getConstructor(new Class[] {}) .newInstance(new Object[] {}); // 获得对象的所有属性,包括私有的 Field fields[] = classType.getDeclaredFields(); for (int i = 0; i < fields

黑马程序员-14 Java基础加强1

你说的曾经没有我的故事 提交于 2020-04-07 12:19:46
------- android培训 、 java培训 、期待与您交流! ---------- 枚举 有限对象的类 public class EnumTest { /** * @param args */ public static void main(String[] args) { //普通方法模拟枚举 MyWeekDay weekDay=MyWeekDay.SUN; System.out.println(weekDay.nextDay()); WeekDay weekDay2=WeekDay.FRI; System.out.println(weekDay2);//枚举类提供了toString方法 System.out.println(weekDay2.name());//FRI,返回此枚举常量的名称,在其枚举声明中对其进行声明 System.out.println(weekDay2.ordinal());//5,返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。 System.out.println(weekDay2.getClass());//class cn.itcsat.day1.EnumTest$WeekDay //枚举类中的静态方法 System.out.println(WeekDay.valueOf("SUN"));/

黑马程序员 Java 加强

守給你的承諾、 提交于 2020-04-07 07:43:14
---------------------- android培训 、 java培训 、期待与您交流! ---------------------- 1.可变参数 可变参数特点: 只能出现在参数列表的最后; ...位于变量类型和变量名之间,前面有无空格都可以; 调用可变参数的方法时,编译器为该可变参数隐式创建一个数组,在方法体内以数组的形式访问可变参数 7 public class VariableParameter { 8 9 public static int add(int x,int...args) 10 { 11 int sum=x; 12 for (int i = 0; i < args.length; i++) { 13 14 sum=sum+args[i]; 15 } 16 return sum; 17 } 18 public static void main(String args[]) 19 { 20 System.out.println(add(2,4)); 21 System.out.println(add(1,2,3,4,5,6)); 22 } 23 } 2.枚举 1.用enum定义枚举类默认继承了java.lang.Enum类而不是继承了Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang

黑马程序员--java基础加强之反射(Reflection)

℡╲_俬逩灬. 提交于 2020-04-07 06:56:36
------- android培训 、 java培训 、期待与您交流! ---------- 反射 一、反射的基石-->Class类 1、java类的作用:是用来描述一类事物的共性,有什么属性,没有什么属性,至于属性的值是什么,则由这个类的实例对象来确定的,而不同的 实例对象就有不同的属性值。 2、Class类的产生:java程序中的各个java类也属于同一类事物,所以也可以用一个类来描述这些事物,这个类就是Class。 例如:众多的人需要建一个Person类,同理众多的类需要建一个Class类。 二、Class类介绍 1、创建Class类的的引用:Class class = 字节码(Person.class); 字节码:每个类编译后会产生一个.class文件,该文件就是字节码。 1)类名.class,如:System.class; 2)对象.getClass(),如:new Date().getClass(); 3)Class.forName("类名"),如:Class.forName("java.lang.String"); 该方法在反射中常用,用时将类名作为变量传入。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class ReflectionClass { public static

黑马程序员_张孝祥反射详解

喜欢而已 提交于 2020-04-06 08:34:31
------- android培训 、 java培训 、期待与您交流! ---------- 反射: *反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示Java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Contructor、Package等等。 一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法可以得到这些实例对象。 Constructor类代表某个类中的一个构造方法 得到某个类的所有构造方法: Constructor[] constructors = Class.forName(“java.lang.String”).getConstructors(); 得到某一构造方法: Constructor constructor = Class.forName(“java.lang.String”).getConstructors(StringBuffer.class); //获得方法时要用到的类型

java--反射--黑马程序员

风流意气都作罢 提交于 2020-04-06 05:38:39
------ Java培训、Android培训、iOS培训、.Net培训 、期待与您交流! ------- 反射 主要内容:《获取Class对象的三种方式、获取无参_有参构造方法、获取成员变量、获取成员方法、运行配置文件内容、越过泛型检查、代理模式、动态代理、模版设计模式、装饰模式、 JDK5的新特性、JDK7的新特性 》 1.获取Class对象的三种方式 1.Object类中的:getClass():此方法不是静态的,必须对象的引用调用; 2.class属性:任何的数据类型(包括基本数据类型)都有一个静态的class属性,它可以获取这个类的Class对象; 3.Class类中有个静态方法: Class forName(String className);className要是全名限定的类名(带包名的类名) 常用:第3种; 1 public class Demo { 2 public static void main(String[] args) throws ClassNotFoundException { 3 Student stu = new Student();//会产生:Student对象空间,Class对象空间 4 //方式一:获取Class对象 5 Class stuClass1 = stu.getClass(); 6 //方式二:静态的class属性 7 Class

黑马程序员_java总结_反射

半腔热情 提交于 2020-04-06 03:56:03
----------- android培训 、 java培训 、java学习型技术博客、期待与您交流! ------------ 现在总结反射机制,个人感觉反射在JAVA中是相当重要的.我让为的反射:在java中执行一个 程序之前会先把其编译成class文件,而反射就是在运行时把已有的class文件进行反编 译的并在这个过程中,把类中的所有元素转换成JAVA中的类的一个过程,因为一个Class 文件就相当于一个类,那么反射就是以类为单位进行操作的了.对于反射的内容包括以下 几点: 1.类的字节码(Class) 2.反射时的构造方法. 3.反射时的普通方法. 4.反射时的成员变量. 1.类的字节码(Class) 要想实现反射,在JAVA中就必须借助与Class类,它是反射的基础.每一个类在编译时 都会被编译成.class 文件.而在运行时,JVM会把这些要用到的文件加载到内存中, 这时这些文件就是以一段段的字节码的形式表示的,而这些字节码也被java封装成了 一个对象,这个对象就是Class,而java中 实现反射就是以一个Class为单位操作的, 所以要实现反射就必须先有这么一个对象了.要想得到Class类的实例有三种方式: 1.类名.class;如: Class clazz = String.class; 2.调用Class类的静态方式forName方法,它有几个重载形式