java获取类内容
java获取类内容
- Book类
public class Book implements Serializable {
private int id;
private String name;
private int tid;
private double price;
private String author;
private String descri;
private String photo;
private Date pubdate;
public static final double PI=3.14;
//记住对方
private Type type;
public Book() {//公有的
}
Book(int id){//包可见性
this.id=id;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
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;
}
public int getTid() {
return tid;
}
public void setTid(int tid) {
this.tid = tid;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescri() {
return descri;
}
public void setDescri(String descri) {
this.descri = descri;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
public Date getPubdate() {
return pubdate;
}
public void setPubdate(Date pubdate) {
this.pubdate = pubdate;
}
private void test(){}
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", tid=" + tid + ", price=" + price
+ ", author=" + author
+ ", descri=" + descri + ", photo=" + photo + ", pubdate=" + pubdate
+ "]";
}
}
- 看父类,实现的接口和构造函数
public class ReflectDemo01 {
public static void main(String[] args) throws NoSuchMethodException,
SecurityException {
//照相法 1:通过静态属性 class
//该方式在源代码中规定好了看那个类,不能在运行时动态改变
Class clazz1=Book.class;
System.out.println("看父类");
System.out.println(clazz1.getSuperclass());
System.out.println("看实现了那些接口");
Class[] cls=clazz1.getInterfaces();
for (Class class1 : cls) {
System.out.println(class1);
}
System.out.println("看所有构造函数");
Constructor[] cs1=clazz1.getDeclaredConstructors();
for (Constructor constructor : cs1) {
System.out.println(constructor);
}
System.out.println("看所有 public 的函数");
Constructor[] cs2=clazz1.getConstructors();
for (Constructor constructor : cs2) {
System.out.println(constructor);
}
System.out.println("看某个公有的");
//Constructor cons1=clazz1.getConstructor(int.class);
//System.out.println(cons1);
Constructor cons2=clazz1.getConstructor();
System.out.println(cons2);
System.out.println("看某个");
Constructor cons3=clazz1.getDeclaredConstructor(int.class);
System.out.println(cons3);
}
}
z
- 看方法
public class ReflectDemo02 {
public static void main(String[] args)
throws ClassNotFoundException, IOException, NoSuchMethodException,
SecurityException {
// 该方式在源代码中规定好了看那个类,不能在运行时动态改变
Class clazz1 = Book.class;
// 看所有公有方法:包括继承
Method[] ms1 = clazz1.getMethods();
for (Method method : ms1) {
System.out.println(method);
}
// 看本类定义的方法:不包括继承
System.out.println("--------------------");
Method[] ms2 = clazz1.getDeclaredMethods();
for (Method method : ms2) {
System.out.println(method);
}
System.out.println("++++++++++++++++++++++");
// 看某个公有的
Method m1 = clazz1.getMethod("setPubdate", Date.class);
System.out.println(m1);
// Method m2=clazz1.getMethod("test");
// System.out.println(m2);
System.out.println("=============================");
// 看本类定义的方法
Method m3 = clazz1.getDeclaredMethod("setPubdate", Date.class);
System.out.println(m3);
Method m4=clazz1.getDeclaredMethod("test");
System.out.println(m4);
}
}
- 看字段
public class ReflectDemo03 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException {
Class clazz1 = Book.class;
// 看所有公有字段,包括继承的
Field[] fs1 = clazz1.getFields();
for (Field field : fs1) {
System.out.println(field);
}
System.out.println("===========================");
// 看本类定义的
Field[] fs2 = clazz1.getDeclaredFields();
for (Field field : fs2) {
System.out.println(field);
}
System.out.println("===========================");
// 看本类定义的某个字段
Field field1 = clazz1.getDeclaredField("name");
System.out.println(field1);
// 看公有字段
//下面两行代码抛出异常:Exception in thread "main"
java.lang.NoSuchFieldException: name
//Field field2 = clazz1.getField("name");
//System.out.println(field2);
}
}
构造函数的调用
- 通用方法
public class ReflectDemo01 {
public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
// 1 找到像
Class<Book> clazz1 = Book.class;
// 2 找到构造函数
Constructor<Book> cs = clazz1.getDeclaredConstructor(int.class);
System.out.println(cs);
cs.setAccessible(true);//不设置访问不了,因为不再同一个包,修改这种行为
// 3 调用构造函数
Book book = cs.newInstance(1);
System.out.println(book);
}
}
- 无参函数调用
public class ReflectDemo02 {
public static void main(String[] args) throws NoSuchMethodException,
SecurityException, InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
// 1 找到像
Class<Book> clazz1 = Book.class;
// 2 找到构造函数
Constructor<Book> cs = clazz1.getDeclaredConstructor();
// 3 调用构造函数
Book book = cs.newInstance();
System.out.println(book);
//为了简化调用无参数构造函数,可以直接调用像的方法
Book book2=clazz1.newInstance();
System.out.println(book2);
}
}
java获取类内容的更多相关文章
- java获取类的信息
关键技术剖析 1.java.lang.reflect包实现了java的反射机制,在使用反射机制时,需要导入该包. 2.Class类的forName方法能够根据类名加载类,获得类的Class对象. Cl ...
- java反射类内容获取
private void DtoReflect(Object obj, MqDto mqDto) throws Exception { Map map = getMap(mqDto); if(obj= ...
- java获取类路径下文件的绝对路径
获取文件绝对路径 在idea中,默认的当前路径是project的根路径,如果你使用idea的默认路径,只要离开idea换到其他位置,可能当前路径就不是project的根路径了. 使用一下通用方式的前提 ...
- java 获取pdf内容
1. 说明 将pdf中的文字读取处理还有一些限制:1. 文档的安全属性不能过于严格 2. 不能存在图片. 2. 直接贴相关的源码 有两种读取方式,maven对应的pom文件 <dependenc ...
- java 获取类路径
package com.jason.test; import java.io.File; import java.io.IOException; import java.net.URL; public ...
- java获取类的3种方式
1.Class.forName("全类名"):将字节吗文件加载进内存,返回Class对象,多用于配指文件,将类名定义在配置文件中,便于利用java的反射机制生成类对象,加载类. / ...
- Java获取类路径的方式
Java环境中,如何获取当前类的路径.如何获取项目根路径等: @Test public void showURL() throws IOException { // 第一种:获取类加载的根路径 Fil ...
- java获取类的全类名----类名.class.getName()的作用是获取这个类的全类名
类名.class.getName()的作用是获取这个类的全类名
- java 获取类路劲注意点
在resin里用MyConstants.class.getResource("/").getPath(),这个方法时,获取到的路劲少[项目名称],最好用MyConstants.cl ...
- java获取类路径
String file = MessageTask3.class.getResource("").getFile(); File: public static final Stri ...
随机推荐
- 简单记录五个Linux设置定时任务的步骤(自动化运维必备)
这几天我们国庆节休息,但是作为运维工作的同学们是不是也不能闲着,担心工作中是不是有任务在执行中需要维护.于是,我们很多的运维工作都是用的自动化运维监控,如果有故障都会定时的处理和告警的.这个与我们的L ...
- Git中常见的一些问题总结
Git中常见的一些问题总结 目录 Git中常见的一些问题总结 1.git添加到暂存区的修改,如果不想要了,怎么撤销 2.git添加到本地仓库,如果不想要了,怎么撤销 3.提交代码时发现别人已经提交了( ...
- EPLAN部件库汇总贴转
经常看到网友求EPLAN部件库,授人以鱼不如授人以渔,大可不必把所有部件装上,比如软件自带的部件库,我都弃之不用,新建一个部件库,把工作中经常要用到的部件慢慢添加进去.慢慢的你会发现:画图效率越来越高 ...
- c中遍历lua的表
//遍历lua表,index为表在栈中的位置 void traverse_table(lua_State* L, int index) { lua_pushnil(L); stack_dump(L); ...
- Hbase 报错hbase Could not start zk requested port of 2181
windows下面 解决: 1. conf/hbase-env.cmd set HBASE_MANAGES_ZK=false 2. 先启动Hbase start-Hbase.cmd 再启动 zoo ...
- UE4.27 新版本像素流送插件配置
UE4.27 像素流送新版插件部署命令 以下内容参考自UE5官方文档:https://docs.unrealengine.com/5.0/en-US/unreal-engine-pixel-strea ...
- 039_External Data Source(转载)
场景描述:很多时候在实际开发中都会遇到很多数据集成问题,如Salesforce和SAP同步数据.为了让类似问题能方便.快速地解决,Salesforce提供了"外部数据源"这样的工具 ...
- 「SOL」E-Lite (Ural Championship 2013)
为什么这数据能水到可以枚举角度 ac 啊 # 题面 给你 \(n\) 个平面向量 \((x_i,y_i)\),对于每个 \(k=1\sim n\),求「从给出的 \(n\) 个向量中不重复地选择 \( ...
- ZSTUOJ刷题⑨:Problem H.--尖兵
Problem H: 尖兵 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4691 Solved: 2112 Description 星光人已经出发了 ...
- centos7.6镜像
centos7.6镜像 https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/