1.什么是反射?

反射其实就是动态的加载类,我们在写JDBC的时候加载驱动Class.forName("xxx")时就涉及到了反射。

反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

2.反射机制能做什么?

1. 在运行时判断任意一个对象的所属的类Class。

2. 在运行时判断构造任意一个类的对象Constructor。

3. 在运行时判断任意一个类所具有的成员变量Field和方法Method。

4. 在运行时调用任意一个对象的方法。method.invoke(object,args)

3.反射机制相关的API

获得完整的包名和类名

Student.java

 package com.reflect.test;

 public class Student {
private int id;
private String name; public Student() {} public Student(int id, String name) {
super();
this.id = id;
this.name = name;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
} }

Test.java

package com.reflect.test;

public class Test {

    Student stu = new Student();

    public static void main(String[] args) {
Test test = new Test();
test.getClassName();
}
//获得完整的包名和类名
public void getClassName() {
System.out.println(stu.getClass().getName());
} }

运行结果

com.reflect.test.Student

获取Class的三种方法

   public static void main(String[] args) {
Test test = new Test();
test.getStudentClass();
} //获取Class对象的三种犯法
public void getStudentClass() {
//第一种方法,forName
Class<?> class1;
try {
class1 = Class.forName("com.reflect.test.Student");
System.out.println("class1:"+class1);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//第二种方法,class
Class<?> class2 = Student.class;
System.out.println("class2:"+class2);
//第三种方法,getClass()
Student stu1 = new Student();
Class<?> class3 = stu1.getClass();
System.out.println("class3:"+class3);
}

运行结果

class1:class com.reflect.test.Student
class2:class com.reflect.test.Student
class3:class com.reflect.test.Student

Java基础加强之反射的更多相关文章

  1. 黑马程序猿————Java基础日常笔记---反射与正則表達式

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...

  2. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

  3. Java基础教程:反射基础

    Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...

  4. 学习Spring必学的Java基础知识(1)----反射(转)

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  5. 学习Spring必学的Java基础知识(1)----反射

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  6. Java基础学习(1)——反射

    反射就是把Java类中的各种成分映射成相应的Java类(主要用于框架开发) 反射的基石–>Class类 Java程序中的各个类属于同一事物,描述这类事务的Java类名就是Class. Class ...

  7. Java基础13:反射详解

    本节主要介绍Java反射的原理,使用方法以及相关的技术细节,并且介绍了关于Class类,注解等内容. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech ...

  8. 大数据JavaWeb之java基础巩固----Junit&反射&注解

    最近打算从0开始学学大数据,目前的主业是Android开发,但是当年毕业之后其实是搞J2EE的,所以打算没事又来拓展一下后台的技能,扩宽一下自己的知识体系对于自己的未来也能够多一些可能,另外大数据的一 ...

  9. 【java基础学习】反射

    1. 什么是反射 Class.Method.Field.Constructor,它们是反射对象.它们是类.方法.成员变量.构造器,在内存中的形式. 也就是万物皆对象!类是类型.方法是类型.成员变量是类 ...

  10. 【JAVA - 基础】之反射的原理与应用

    一.反射简介 反射机制指的是程序在运行时能够获取自身的信息.在JAVA中,只要给定类的名字,那么就可以通过反射机制来获取类的所有信息. 1.反射的应用 JDBC编程中的:Class.forName(& ...

随机推荐

  1. 《码出高效 Java开发手册》第六章 数据结构与集合

    码云: https://gitee.com/forxiaoming/JavaBaseCode/blob/master/EasyCoding/src/collection/index.md 6.1 数据 ...

  2. Implementation:Dijkstra

    #include <iostream> #include <cstdlib> #include <utility> #include <queue> u ...

  3. CSS相对定位|绝对定位(五)之z-index篇——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1855 补充于2016 ...

  4. LeetCode 545----Boundary of Binary Tree

    Given a binary tree, return the values of its boundary in anti-clockwise direction starting from roo ...

  5. 葡萄城报表介绍:Web 报表

    Web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和 HTTP 的.全球性的.动态交互的.跨平台的分布式图形信息系统.Web 报表是以 Web 作为信息展示平台,可以 ...

  6. 日期选择器(DatePicker)

    日期选择器(DataPicker) 显示一个可供日期选择的界面 监听器方法init(year,month,day,OnDateChangedListener) 监听器 DataPicker.OnDat ...

  7. ulimit命令&pthread_create() error: Resource temporarily unavailable

    http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/ https://my.vertica.com/docs/5.0/HTML/Master/ ...

  8. APP之红点提醒三个阶段

    下面这个页面就是我们进入APP后的主界面.客户选项的红点上数字就是显示我们没有查看的客户总数量.   当我们切换到客户这个fragment时,会显示贷款客户数量与保险客户数量.   当我们随便点击入一 ...

  9. Application Context的设计

    基本上每一个应用程序都会有一个自己的Application,并让它继承自系统的Application类,然后在自己的Application类中去封装一些通用的操作.其实这并不是Google所推荐的一种 ...

  10. justreq测试接口配置服务

    特性 自动缓存每一次接口请求,当测试服务器宕机时,依然可以从容开发 接口替身服务,当后台GG们还没开发好接口时,可以用json.txt等替代 独有jrs脚本,仿php,可以定制更灵活的接口替身,甚至可 ...