Java的反射机制也会是面试中较常问到的点。建议可以从基本定义,语法和实际应用3方面作答。
1、基本定义
反射机制是在运行状态中,
对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2、基本语法
1)获取Class对象
一般有3种形式:
Class<?> class1 = Class.forName("全限定类名");
Class<?> class2 = new TestReflect().getClass();
Class<?> class3 = TestReflect.class;
System.out.println("类名称 " + class1.getName());//将打印出全限定类名(包名.类名)
2)实例化一个类的对象
方法一:newInstance
Class<A> class1 = Class.forName("全限定类名");
A a = class1.newInstance();
//调用a的set方法
方法二:构造函数
Constructor<A> cons[] = class1.getConstructors();//该类的全部构造函数
A a = (A) cons[0].newInstance();//无参
a = (A) cons[1].newInstance("value1", "value2");//带参
3)获取父类和接口(单继承多实现)
父类:
Class<A> clazz = Class.forName("全限定类名");
Class<?> parentClass = clazz.getSuperclass();
System.out.println("clazz的父类为:" + parentClass.getName());
接口:
Class<?> intes[] = clazz.getInterfaces();//该类所有接口
for (int i = 0; i < intes.length; i++) {
System.out.println((i + 1) + ":" + intes[i].getName());
}
4)获取一个类全部属性:
Class<A> clazz = Class.forName("全限定类名");
Field[] field = clazz.getDeclaredFields();
for (int i = 0; i < field.length; i++) {
// 权限修饰符
int mo = field[i].getModifiers();
String priv = Modifier.toString(mo);
// 属性类型
Class<?> type = field[i].getType();
System.out.println(priv + " " + type.getName() + " " + field[i].getName() + ";");
}
5)获取一个类全部方法:
Class<A> clazz = Class.forName("全限定类名");
Method method[] = clazz.getMethods();
for (int i = 0; i < method.length; ++i) {
Class<?> returnType = method[i].getReturnType();//返回值类型
Class<?> para[] = method[i].getParameterTypes();//参数类型
String Modify = Modifier.toString(method[i].getModifiers());//修饰符
}
6)调用某个类的方法
Class<A> clazz = Class.forName("全限定类名");
Method method = clazz.getMethod("方法名", {参数类型1.class,参数类型2.class,……});
method.invoke(clazz.newInstance(), {参数值1,参数值2,……});
3、反射机制的应用举例:结合工厂模式
interface Animal { public abstract void eatFood(); } class Monkey implements Animal { @Override public void eatFood() { System.out.println("monkey eat peach ..."); } } class Panda implements Animal { @Override public void eatFood() { System.out.println("Panda eat bamboo ..."); } } class Factory { public static Animal getInstance(String ClassName) { Animal animal = null; try { animal = (Animal) Class.forName(ClassName).newInstance(); } catch (Exception e) { e.printStackTrace(); } return animal; } }
我们来调用一下~
public static void main(String[] args) { Animal animal = Factory.getInstance("com.nineclient.Panda"); if(animal != null) { animal.eatFood(); } }
运行结果:
Panda eat bamboo ...
从以上3个点答反射机制,基本上就行了~~
相关推荐
面试经典题型,很值得分享的。 我们面试经常会遇到的问题。
java反射机制,代码/..安逸.不要错过
Java 反射机制详解 Java 代理模式详解 BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结 : Java 集合常见知识点&面试题总结(上) (必看 ) Java 集合常见知识点&...
·基于JDK 11,将Java8、Java9、Java10、Java11新特性一网打尽 ·课程中,Eclipse和IDEA这两种企业一线开发环境都使用到了 3.技术讲解更深入、更全面: ·课程共30天,715个知识视频小节,涉及主流Java使用的...
Java 反射机制详解 Java 代理模式详解 BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结: Java 集合常见知识点&面试题总结(上) (必看 ) Java 集合常见知识点&...
Java面试-反射机制.doc
主要是将这些年面试积累的20个比较常见的Java面试内容进行了整理,分别从20个方面进行了列举:Java基础、Java语法、Java集合框架、Java泛型、Java异常处理、Java多线程、Java网络编程、Java数据库编程、Java反射机制...
关于反射机制的面试题 常见的对于class的理解 对java底层的理解 适合初学者
Java面试题包括但不限于: Java基础知识:语法、面向对象编程、集合、多线程、异常处理等。 Java高级特性:反射、泛型、枚举、注解、 Lambda表达式等。 Java虚拟机:Java内存模型、垃圾回收、类加载机制等。 ...
JAVA反射机制 JAVA反射机制是在运行状态中, 对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个属性和方法; 这种动态获取的信息以及动态调用对象的方法的功能称为 ...
·基于JDK 11,将Java8、Java9、Java10、Java11新特性一网打尽 ·课程中,Eclipse和IDEA这两种企业一线开发环境都使用到了 3.技术讲解更深入、更全面: ·课程共30天,715个知识视频小节,涉及主流Java使用的...
《Java程序员面试宝典》列举了各大IT公司的面试真题,详细分析了应聘Java程序员职位的常见考点,主要内容包括面试流程及求职准备、Java语言基础、数据类型、集合框架、图形用户界面、输入与输出、多线程、反射机制、...
Java后端面试知识点总结,涉及JVM • 熟悉JVM内存区域,常用引用类型,垃圾回收机制、算法以及常见的GC垃圾收集器(Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1) • 熟悉常用IO模型(BIO、...
内容概要:以上列出的Java面试题涵盖了Java语言的基础知识、面向对象编程、集合、IO流、多线程、反射、类加载器、JVM、序列化、泛型、异常处理、注解等多个方面。 适用人群:以上Java面试题适用于准备Java开发...
一、反射机制 1.1 框架 在学习Java的路上,相信你一定使用过各种各样的框架。所谓的框架就是一个半成品软件,已经对基础的代码进行了封装并提供相应的API。在框架的基础上进行软件开发,可以简化编码。学习使用...
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...
16、说说你对Java反射的理解 17、说说你对Java注解的理解 18、Java中String的了解 19、String为什么要设计成不可变的? 20、Object类的equal和hashCode方法重写,为什么? 21-40题 21、List,Set,Map的区别 26...
本资源适用于运营商、Java开发校招面试基础巩固,包含计算机网络、Java基础、Java集合、Java并发编程、JVM、MySQL、Spring、MyBatis、Redis、Rocket MQ的经典面试题目,涵盖每个知识点的各个方面,能够很好的提升...
动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的...