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 ...
随机推荐
- Anaconda之conda常用命令介绍
anaconda用法: 查看已经安装的包: pip list 或者 conda list 安装和更新: pip install requests pip install requests --upgr ...
- 使用vue的插槽理解
使用插槽的时候其实就是引用子组件,在引用的组件中间写上你要的代码,然后在子组件的的<slot ></slot>中就包含父组件写下的代码. 父组件 import addshop ...
- SignalR《二》接着前篇的继续
SignalR<二>接着前篇的继续 SignalR身份验证 在ChatRoomHub加上[Authorize] 这样登录了才能发送消息 using Microsoft.AspNetCor ...
- mybatis纵览
Mybatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. MyBatis 可 ...
- Redis设计实现-学习笔记
最近在准备面试,问到redis相关知识,只能说个皮毛,说的既不深入也不全面,所以抓紧突击一下,先学<redis设计与实现>. 选择看书的原因是: 书中全面深入,且能出书一定十分用心: 搜博 ...
- 机器学习——常见的backbone
参考链接:https://www.zhihu.com/question/396811409/answer/1252521120 LeNet:5层轻量级网络,一般用来验证小型数据: AlexNet/VG ...
- 手把手教你用Burpsuite+夜神模拟器抓安卓(Android 7)http+https包
(1)进入正题,bp证书下载(下载证书至电脑):打开bp,配置好代理,浏览器访问http://127.0.0.1:8080 下载证书,记住保存路径,注意别修改证书后缀(der)!!! (2)准备一个L ...
- epoll 基本知识与使用
https://blog.csdn.net/qq_35721743/article/details/86742508 epoll 最大的好处在于它不会随着监听 fd 数目的增长而降低效率. epoll ...
- AX2012 查询后台数据库记录
AX2012 自带的数据库查询功能比较慢(特别是查询删除的情况),有些业务可能需要频繁查询删除人和删除时间等,这种情况下还是用代码来查询比较快. 例: static void SysDataBaseL ...
- 移动端H5开发坑位指南
一.HTML方向 调用系统功能 使用<a>能快速调用移动设备的电话/短信/邮件三大通讯功能,使用<input>能快速调用移动设备的的图库/文件. 这些功能方便了页面与系统的交互 ...