面试题总结
其它面试题(springboot、mybatis、并发、java中高级面试总结等)
public class Root{
public static void main(String[] args) {
Class<?> c1 = null;//声明 Class对象
try{
c1 = Class.forName(“Person”);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
Class<?> c[] = c1.getInterfaces();//取得实现的全部接口
for (int i=0;i<c.length;i++){
System.out.println(“实现的接口名称:” + c[i].getName());//输出接口名称
}
}
}
因为接口是类的特殊形式,而且一个类可以实现多个接口,所以此时以 Class 数组的形式将全部的接口对象返回,并利用循环的方式将内容依次输出
三、取得父类
======
一个类可以实现多个接口,但是只能继承一个父类,所以要想取得一个类的父类,可以直接使用 Class 类中的 getSuperclass() 方法,该方法定义:
public Class<? super T> getSuperclass()
getSuperclass() 方法返回的是 Class 实例,和之前得到的接口一样,可以通过 getName() 方法取得名称。
public class Test{
public static void main(String[] args) {
Class<?> c1 = null;
try {
c1 = Class.forName(“Person”);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
Class<?> c2 = c1.getSuperclass();//取得父类信息
System.out.println(“父类名称:” + c2.getName());
}
}
Person 类在编写时没有明确地继承一个父类,所以默认继承 Object 类
四、取得全部构造方法
==========
要取得一个类中的全部构造方法,必须使用 Class 类中的 getConstructors() 方法。
1.取得 Person 类的全部构造方法
import java.lang.reflect.Constructor;
public class Test{
public static void main(String[] args) {
Class<?> c1 = null;
try {
c1 = Class.forName(“Person”);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
Constructor<?> con[] = c1.getConstructors();//得到全部构造方法
for (int i=0;i<con.length;i++){
System.out.println(“构造方法:” + con[i]);
}
}
}
2.取得一个类的全部构造方法
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
public class Test{
public static void main(String[] args) {
Class<?> c1 = null;
try {
c1 = Class.forName(“Person”);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
Constructor<?> con[] = c1.getConstructors();//得到全部构造方法
for (int i=0;i<con.length;i++){
Class<?> p[] = con[i].getParameterTypes();//列出构造中的参数类型
System.out.print(“构造方法:”);
int mo = con[i].getModifiers();//取出权限
System.out.print(Modifier.toString(mo) + " ");//还原权限
System.out.print(con[i].getName());//输出构造方法名称
System.out.print(“(”);
for (int j=0;j<p.length;j++){
System.out.print(p[j].getName() + " arg" + i);
if (j<p.length-1){//打印参数类型,判断是否要输出“,”
System.out.print(“,”);
}
}
System.out.println(“){}”);
}
}
}
五、取得全部方法
========
要取得一个类中的全部方法,可以使用 Class 类中的 getMethods() 方法,该方法返回一个 Method 类的对象数组。该方法的常用方法:
取得一个类的全部方法定义:
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test{
public static void main(String[] args) {
Class<?> c1 = null;
try {
c1 = Class.forName(“Person”);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
Method m[] = c1.getMethods();//取得全部的方法
for (int i=0;i<m.length;i++){
Class<?> r = m[i].getReturnType();//取出方法的返回值类型
Class<?> p[] = m[i].getParameterTypes();//得到全部的参数类型
int xx = m[i].getModifiers();//得到方法的修饰符
System.out.print(Modifier.toString(xx) + " ");//还原修饰符
System.out.print(r.getName() + " ");//得到方法名称
System.out.print(m[i].getName());//取得方法名称
System.out.print(“(”);
for (int x=0;x<p.length;x++){
System.out.print(p[x].getName() + " " + “arg” + x);//输出参数
if (x<p.length-1){
System.out.print(“,”);//判断是否输出","
}
}
Class<?> ex[] = m[i].getExceptionTypes();//得到全部的异常抛出
if (ex.length>0){
System.out.print(") throws ");//输出“) throws”
}else {
System.out.print(“)”);
}
for (int j=0;j<ex.length;j++){
System.out.print(ex[j].getName());//输出异常信息
if (j<ex.length-1){
System.out.print(“,”);
}
}
System.out.println();
}
}
}
开发工具就是利用了反射的原理
六、取得全部属性
========
在反射操作中也同样可以取得一个类中的全部属性,有两种不同的操作:
得到实现的接口或父类中的公共属性:public Field[] getFields() throws SecurityException
得到本类中的全部属性:public Field[] getDeclareDeclaredFields() throws SecurityException
上述方法返回的都是 Field 的数组,每一个 Field 对象表示类中的一个属性,而要想取得属性的进一步信息,需要使用:
取得 Person 类中的属性
最后总结
ActiveMQ+Kafka+RabbitMQ学习笔记PDF
关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
45202009)]
关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦