Java反射【二、Class类的使用】
类本身也是对象,是java.lang.Class类的实例对象——There is a class named Class.
Class类表示方式
Class类只有Java虚拟机才能初始化,有三种表示方式(Demo是一个类)
1、Class c1=Demo.class;
2、Demo d = new Demo();
Class c2 = d.getClass();
3、Class c3 = Class.forName("PackageName+ClassName");//使用类的全名获取类的类对象,需要try catch
使用类的类对象创建类对象(有点绕,就是用Class对象创建具体的类对象)
Demo d1 = c1.newInstance();
编译和运行
使用eclipse时Run会一并进行编译和运行,感知不是很清晰
用txt写java代码,命令行编译执行比较明确
javac 用于编译.java 文件为 .class文件
java 用于运行.class 文件
静态加载类和动态加载类
静态:使用new创建一个类即为静态加载(编译时刻加载)
动态:使用class.newInstance()创建一个类即为动态加载(运行时刻加载)
以下举例说明动态加载的优势:
有一个Porject程序,其中需要使用到A类和B类,最初实现如下:public class StaticAndDynamicClass {
public static void main(String[] args) {
AClass a = new AClass();
a.exe(); BClass b = new BClass();
b.exe();
}
}
这样运行肯定会报错,因为AClass和BClass不存在
如果AClass存在呢?
public class AClass {
public static void Exe(){
System.out.println("AClass execute...");
}
}
此时报两个错,BClass找不到
这就是静态加载类的特点,需要将用到的所有类全部加载之后才能编译
如果利用newInstance动态的加载类,就可以不用关心类是否完全加载,只要在运行时判断即可
public class StaticAndDynamicClass {
public static void main(String[] args) {
// AClass a = new AClass();
// a.Exe();
//
// BClass b = new BClass();
// b.Exe();
//创建一个接口,符合该接口定义的类都可以被动态加载
Class c = null;
try {
c = Class.forName(args[0]);
ISADC a = (ISADC) c.newInstance();
a.Exe();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
ISADC是一个统一定义接口,凡是符合该接口的类名称都可以通过传参动态的加载进来
Java反射【二、Class类的使用】的更多相关文章
- JAVA反射之Class类的练习
package zhang; /** * JAVA反射之CLass类的练习 * * 在面向对象的语言里,万事万物皆对象,那么类是谁的对象呢? * 类的类型是CLass * * */ class Tes ...
- 【java】java反射初探 ——“当类也照起镜子”
反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解) 我理解的java反射机制就是: 提供一套完善而强大的API ...
- 【java】java反射初探 ——“当类也学会照镜子”
反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解哈) 我理解的java反射机制就是: 提供一套完善而强 ...
- Java反射初探 ——“当类也学会照镜子”
反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解哈) 我理解的java反射机制就是: 提供一套完善而强大的 ...
- java反射之获取类的基本信息(一)
一.反射原理. Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”.这里“类的部分已经的信息”,可以是“类名”或“类的对象”等信息.“类的全部 ...
- Java反射之Class类
接下来的几章,我们谈一谈java的反射机制. 反射就是从一个java类中映射出一个java类或是一个实例.通常在很多框架中都用到反射,比如常用的ssm框架,在配置文件中总是会写到类的全名,框架通过读取 ...
- Java反射 - 1(得到类对象的几种方法,调用方法,得到包下的所有类)
通过反射获得对象的方法 准备工作: 有一个User类如下 package o1; /** * Created by yesiming on 16-11-19. */ public class User ...
- java反射 顺序输出类中的方法
java反射可以获取一个类中的所有方法,但是这些方法的输出顺序,并非代码的编写顺序. 我们可以通过自定义一个注解来实现顺序输出类中的方法. 首先,先写一个类,定义增删改查4个方法 public cla ...
- java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~
项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...
- 深入分析Java反射(二)-数组和枚举
前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行 ...
随机推荐
- 001-软件架构概览、maven补充【分包工程、合并包、web容器插件】、git补充
一.整体概述 1.1.共性问题 技术瓶颈.不成体系.不能实际使用.不能落地.无法入门 1.2.目标-软件架构 专注于构建:高可扩展.高性能.大数据量.高并发.分布式的系统架构. 各项技术.组合构建分布 ...
- Sass安装与Webstorm File Watcher配置
一.Sass安装 ruby安装 mac系统默认安装了ruby,可以直接跳过此步骤,linux和windows需要安装ruby环境. windows安装ruby环境: 到ruby官网下载自己系统适用的版 ...
- 2. bash基础
通配符 通配符 功能说明 实例 * 匹配所有字符 ls *.o ? 匹配所有的当个字符 ls net??? [a-z] 匹配属于a到z范围集合内的一个字符 ls [a-i]* [...] 与方括号内的 ...
- AES 加密算法的原理详解
AES 加密算法的原理详解 本教程摘选自 https://blog.csdn.net/qq_28205153/article/details/55798628 的原理部分. AES简介 高级加密标准( ...
- springboot-定时任务-单线程
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annot ...
- ETH挖矿
转载声明:http://www.120btc.com/baike/coin/1021.html (仅为了方便自己及原文章被删除) 最近以太坊大涨市值成为仅次比特币的第二大数字货币,那么以太坊(ETH) ...
- Unreal Engine* 4/英特尔® VTune™ Amplifier 使用指南
借助英特尔 VTune Amplifier,可以通过单一易用的分析界面获得先进的分析功能.UE4 和英特尔 VTune Amplifier 相互配合,支持调查代码并进行分析,从而在多个内核上顺畅运行. ...
- kubeadm安装集群系列(kubeadm 1.15.1)
kubeadm已经进入GA阶段,所以尝试使用kubeadm从零开始安装高可用的Kubernetes集群,并记录下过程和所有坑 本文基于kubeadm 1.15.1 目录 kubeadm安装集群系列-1 ...
- rest_framework 学习笔记(一)
rest_framework [TOC] 简介 Django REST框架是一个功能强大且灵活的工具包,用于构建Web API. 官方网站:https://www.django-rest-framew ...
- LCA cogs 2450 2048 1588
t1 2450距离 链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=vSNNNVqga [题目描述] 在一个村子里有N个房子,一些双向的路连接 ...