Java-反射初级知识掌握
PS:本文就Java基础需要掌握的反射知识做下汇总和分析。
Java-reflect:java反射,对应我们研究框架、底层框架起到基本的知识储备。
- Class类
Java的世界类,万事皆对象,所有的类都是java.lang.Class类的实例对象
Thers is a class named Class
所有的类不管是内部类,都是Class的对象
任何一个类都是Class类的实例对象,这个实例对象有三种表示方式
1. Class c1=类名.class;
任何一个类都是有个隐含的静态成员变量
2.Calss c2=类实例.getClass();
c1和c2都是类的类型
类也是对象,是Class类型对象
一个类是Class类的一个对象
3.Class c3=Class.forName("类的完整路径”);
PS:我们可以通过类类型去创建实例对象,newInstance(),其会调用无参数构造方法,需要进行强制类型转换,这个就是反射!!!! - 动态加载类
什么是编译、什么是运行??
静态加载:编译时刻加载了类就是静态加载,new 类();
动态加载:class.forName是动态加载,实在运行的时候加载类
PS:考虑两者有什么不同点,静态加载有一个类找不到的时候,整个项目都使用不了。动态加载实在项目运行的时候,才会去加载,我用什么就加载什么。
功能性的类要使用动态加载,后续扩展比较容易 - 基本的数据类型
1.Class c1=int.class;//int的类类型
2.Class c2=String.class;//String类的类类型
3.Class c3=double.class;
4.Class c4=Double.class;
5. Class c5=void.class; - Class 类的基本的API
public static void printClassMessage(Object ob){ //传递的是那个子类的对象,那么c就是那个,底层是java实现的 Class c=ob.getClass(); //获取类的名称 System.out.println("类的全路径名称:"+c.getName()); System.out.println("类的名称:"+c.getSimpleName()); //获取类的方法,获取的是所有的public方法 Method[] msPulbic=c.getMethods(); //获取当前类的所有的方法,不管修饰符 Method[] msOwn=c.getDeclaredMethods(); //打印方法名 for (Method method : msPulbic) { //获取返回参数的类类型 Class returnType=method.getReturnType(); System.out.println("方法的返回值:"+returnType.getName()); //获取参数类型,参数列表的类类型 Class<?>[] paramTypes=method.getParameterTypes(); for (Class<?> classType : paramTypes) { System.out.println("方法的参数:"+classType.getName()); } } }
Java-反射初级知识掌握的更多相关文章
- Java反射-高级知识掌握
PS:本文就Java反射的高级知识做下汇总,理清在什么情况下,我们应该去使用反射,提供框架的健壮性,ps:xieyang@163.com/xieyang@163.com
- Java反射-中级知识掌握
PS:本文就Java反射常用的中级知识做下汇总和分析/cnxieyang@163.com/xieyang@e6yun.com
- java反射基础知识(五)反射应用实践
详解Java反射各种应用 Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息.通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: Cl ...
- java反射基础知识(三)
原文地址:http://tutorials.jenkov.com/java-reflection/index.html http://www.cnblogs.com/penghongwei/p/329 ...
- java反射基础知识(二)
1. 了解 Java 中的反射 1.1 什么是 Java 的反射 Java 反射是可以让我们在运行时获取类的函数.属性.父类.接口等 Class 内部信息的机制.通过反射还可以让我们在运行期实例化对象 ...
- java反射基础知识(一)
一.反射 反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...
- Java反射基础知识
反射机制就是可以把一个类,类的成员(属性.方法)当成一个对象来操作,也就是说,类,类的成员,我们在运行的时候可以动态的去操作它们. 所有的Java类都继承了Object类,在Object类中定义了一个 ...
- java反射基础知识(四)反射应用实践
反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start. 在应用反射机制之前,首先我们先来看一下如何获取一个对象对应的 ...
- java对象初级知识
this属于类 方法中没有自己的this指针(本来以为js方法中有,其实并没有里,那是被new出来的function 在声明的时候可以赋初值: int a =12 但不能 int a ; a ...
- Java反射实战
一.背景 最近的项目中需要使用到Java 反射的知识,以前不怎么了解,也基本没怎么用过,抽出一片时间,来具体学习和实战下Java的反射!拿来和大家分享以及记录方便以后学习! 二.反射相关概念解析 1. ...
随机推荐
- java 拦截器
一.前言 这是一篇关于 java 拦截器的文章,是我的写 java web 所遇见的问题.当我们写好一个网站,必须要通过登陆页面才可以进入这个系统.那么我们就得写个 java 拦截器,如果是通过登录 ...
- 其他函数:值为NULL时的默认值NVL,DECODE
NVL(列,默认数字值),此函数返回值为数值型,非NULL时返回原始值,NULL时返回默认数字值. DECODE:
- 【python】内部函数
- iOS----------如何检查域名是否支持ipv6
http://ipv6-test.com/validate.php 这个地址 也可以检测到! 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧. 2. ...
- 【NOIP模拟】【USACO】 Bovine Genomics
Description 给定两个字符串集合A,B,均包含N个字符串,长度均为M,求一个最短的区间[l,r],使得不存在字符串\(a\in A,b\in B,\)且\(a[l,r]=b[l,r]\) , ...
- scala写算法-List、Stream、以及剑指Offer里部分题目基于scala解法
Stream(immutable) Stream是惰性列表.实现细节涉及到lazy懒惰求值.传名参数等等技术(具体细节详见维基百科-求值策略). Stream和List是scala中严格求值和非严格求 ...
- android中的五大布局(控件的容器,可以放button等控件)
一.android中五大布局相当于是容器,这些容器里可以放控件也可以放另一个容器,子控件和布局都需要制定属性. 1.相对布局:RelativeLayout @1控件默认堆叠排列,需要制定控件的相对位置 ...
- Python 多线程进程高级指南(二)
本文是如何<优雅地实现Python通用多线程/进程并行模块>的后续.因为我发现,自认为懂了一点多线程开发的皮毛,写了那么个multi_helper的玩意儿,后来才发现我靠原来就是一坨屎.自 ...
- bzoj 1570: [JSOI2008]Blue Mary的旅行
Description 在一段时间之后,网络公司终于有了一定的知名度,也开始收到一些订单,其中最大的一宗来自B市.Blue Mary决定亲自去签下这份订单.为了节省旅行经费,他的某个金融顾问建议只购买 ...
- 消息队列一:为什么需要消息队列(MQ)?
为什么会需要消息队列(MQ)? #################################################################################### ...