我对java反射机制的理解
我们平常怎么用一个使用类,怎么使用类的方法?
其实就是创建一个对象,并且通过这个对象调用这个方法。不过这有一个问题,就是这个对象的载体就和这个对象产生了耦合,怎么降低两者间的耦合呢?java的反射机制就实现了这样的功
能,通过Class.forname().newinstance去构造一个类(注意对比Class.forname和Class.forname().newinstance()),这个类可以看做虚拟的类,然后通过这个类去获取方法,并调用。然后你
会发现是这个虚拟的类,与这个类的载体发生了耦合,从某个的角度上来说,这种耦合就降低了。因为这个虚拟类并不是这个系统的驱动类。
而反射机制的,我暂时所了解的应用有这么两个:
1.从Class.forname("数据库驱动")说起。这句语句的作用,我们一直说是加载驱动,为什么这么说呢?因为数据库驱动这个类里面有一个静态块,语句是DriverManager.registerDriver(new
Driver());,即是用来加载驱动的。也就是说,通过创建一个类的实例,来加载这个静态块,以实现加载驱动。
所以说,Class.forName的作用了你New "数据库驱动"的作用是一样的。
2.通过这个实例去获得方法,然后通过method.invoke("对象",“方法参数”。。。),去调用这个方法。
这是有关反射的,如下解释:
String str = "T";
Class c = Class.forName(str); //获取以T为类名的类
Object o = c.newInstance(); //实例化c
我对java反射机制的理解的更多相关文章
- JAVA反射机制及理解
JAVA反射 往往当我们面对一项新的知识时,我们往往需要知道三个方面,它是什么,它能做什么,它比原有知识强在哪里,我们该怎么使用它.当你能够解决这些问题时,便意味着你已经对这项知识入门了. 首先: 反 ...
- java反射机制的理解
反射机制是什么概念?大多都有介绍,指的是程序在运行状态中,能够加载一个只有类名的类,加载完之后会在堆上产生一个Class对象.通过这个 Class对象可以获得类的属性.方法和其他类信息.之前对反射的应 ...
- java反射机制 + Method.invoke解释 getMethod + 反射理解
功能: 通过读取另一个Dll去创建一个控件(Form,Button,TextBox,DataGridView),然后对当中一些属性进行检查. 创建控件的大致流程是,Assembly->Modul ...
- (转)JAVA反射机制理解
JAVA反射机制: 通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们. 理论的东东太多也没 ...
- Java反射机制的浅显理解(这篇文章还没写好,留个草稿给自己看的)
目前只是有一个大概的理解,先把自己感觉容易立即的概念放这里,等以后结合实际工作理解深刻了再来补充. 一.什么是Java反射机制?(多种定义) 1. JAVA反射机制是在运行状态中,对于任意一个类,都能 ...
- java反射机制的进一步理解
承上一篇. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...
- 理解Java反射机制
理解Java反射机制 转载请注明出处,谢谢! 一.Java反射简介 什么是反射? Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在.灵活掌握Java反射机制,对学习框架技术有很大 ...
- Java知识总结:Java反射机制(用实例理解)
概念理解: 反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机制来 实现对自己行为的描述( self-representation )和检测( examination) ,并能 ...
- java反射机制的粗略理解
java反射机制: 涉及的对象:Class, Object, 函数:Class类:[forName(String className):static:getClass():public],Object ...
随机推荐
- centos 搭建gitlab
#修改yum源 yum -y install wget cd /etc/yum.repos.d wget -O CentOS-Base.repo http://mirrors.aliyun.com/r ...
- R-squared是什么意思
在回归分析中,R-squared值应该为多大? 就像经常被问到,在回归分析中,R平方应该为多大才表示回归模型是好的?我经常能够听到这类问题,在没回答这个问题之前,我会解释如 何来解释R平方值,我也会阐 ...
- ASP.NET MVC学习笔记-----使用自定义的View Engine
我们都知道在ASP.NET MVC中自带了Razor View Engine,Razor十分的强大,可以满足我们绝大部分的需要.但是ASP.NET MVC的高度可扩展性,使我们可以使用自定义的View ...
- SQL Server2008ldf文件太大
--适用于SQL Server 2008的方法 USE [master] GO ALTER DATABASE RmyyHisDW SET RECOVERY SIMPLE WITH NO_WAIT GO ...
- spring 注解的总结
一.java内置注解 1.@Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括: ElemenetType.CONSTRUCTOR 构造器声明 ElemenetTyp ...
- C语言内存对齐详解(2)
接上一篇:C语言内存对齐详解(1) VC对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式.VC 中提供了#pr ...
- FineUI第六天---表单控件
表单控件 所有表单控件都有的属性有: ShowLabel:是否显示标签(默认值:true). ShowEmptyLabel:是否显示空白的标签(默认值:false). Label:标签文本(默认值:& ...
- [OpenJudge 3066]随机序列
[OpenJudge 3066]随机序列 试题描述 Bob喜欢按照如下规则生成随机数: 第一步:令a[0] = S, 当n = 0: 第二步:a[n+1] = (a[n]*A+B)%P: 第三步:如果 ...
- HDU 2895 编辑距离
#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> ...
- HLG2062(make,heap问题)
最小的n个和 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 129(37 users) Total Accepted: 35(29 u ...