精华内容
下载资源
问答
  • java反射机制面试题:1、java反射机制的作用是什么?答案:在运行的时候构造任意一个类的对象;在运行的时候判断任意一个对象所属的类;在运行的时候任意调用一个对象的方法;在运行的时候判断任意一个类所具有的成员变量...

    大家对于java反射机制应该都是很了解的吧,那么下面要给大家分享的就是一组和java反射机制有关的java面试题,下面一起来看看java反射面试题都有哪些吧!

    java反射机制面试题:

    1、java反射机制的作用是什么?

    答案:在运行的时候构造任意一个类的对象;在运行的时候判断任意一个对象所属的类;在运行的时候任意调用一个对象的方法;在运行的时候判断任意一个类所具有的成员变量以及方法。

    2、反射机制的优点和缺点是什么?

    19560b7de26a4ae77d9adccfe6a4a4f2.png

    3、反射机制是什么?

    答案:反射是在运行状态当中,对于任意一个类,都可以知道这个类的所有属性和方法,对于任意一个对象,都可以调用它的任意一个方法和属性,这样的动态获取的信息以及动态调用对象的方法的功能被叫做java语言的反射机制。

    4、哪里要用到反射机制?

    答案:很多的框架都是需要用到反射机制的,例如hibernate、struts等等,都需要用到反射机制来实现。

    5、java反射机制原理

    6、怎样去使用使用java的反射?

    答案:通过class对象获得一个属性对象,(1)Field

    c=clz.getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段;(2)Field

    c=clz.getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段

    获取构造器对象,通过构造器new出一个对象,(1)Clazz.getConstructor([String.class]);(2)Con.newInstance([参数]);。

    通过class对象获得一个方法对象,(1)Clazz.getMethod(“方法名”,class……parameaType);(只能获取公共的)(2)Clazz.getDeclareMethod(“方法名”);(获取任意修饰的方法,不能执行私有)(3)M.setAccessible(true);(让私有的方法可以执行)。

    通过一个全限类名创建一个对象,(1)Class.forName(“全限类名”); 例如:com.mysql.jdbc.Driver

    Driver类已经被加载到jvm当中,并且完成了类的初始化工作就成(2)类名.class; 获取Class clz

    对象(3)对象.getClass();。

    让方法执行,(1)Method.invoke(obj实例对象,obj可变参数);-----(是有返回值的)。

    通过class对象创建一个实例对象(就相当与new类名()无参构造器)(1)Clazz.newInstance()。

    具体体现:

    通过.class// 第一种 获取到类对象

    Class class1 = Person.class;

    通过包名,调用class的forName方法Class class3 = Class.forName("day07.Person");

    通过创建实例对象来获取类对象Person person = new Person();

    Class class2 = person.getClass();

    java反射机制面试题及答案就给大家整理这些内容了,你还想了解更多的java面试题吗?欢迎继续关注奇Q工具网来了解哦。

    推荐阅读:

    展开全文
  • Java反射机制的大厂面试题 反射机制概念 Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种 动态的获取信息 以及 动态调用...

    Java反射机制的大厂面试题

    反射机制概念

    Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种 动态的获取信息 以及 动态调用对象的方法 的功能称为 java 的反射机制

    为什么引入反射概念

    相信你看上面的概念,心中没有泛起任何的波澜,动态的获取信息动态调用对象方法黑人问号。下面一段简单代码作为i出发点,从java虚拟机角度阐述

    • 写下如下代码
    public class Main{
        public static int number = 1;
        public static void main(String args[]) {
        	System.out.println("hello World");
        }
    }
    
    • 调用javac Main.java命令将Main.java文件编译成Main.class文件
    • 之后执行java Main命令后,java虚拟机启动,进行类加载过程,方法区中存储类的静态存储结构,同时在内存中生成一个代表该类的java.lang.Class对象,作为方法区中该类的各种数据的访问入口

    上述过程表明,编译阶段,就已经明确java虚拟机要加载的类(Main类),如果你的程序运行中,突然需要加载远程服务器的类(运行中加载),这时候反射机制就粉墨登场

    有一个很经典的场景就是加载数据库驱动类,只有运行的时候通过参数,才能确定是加载com.java.dbtest.myqlConnection(mysql驱动类),还是加载com.java.dbtest.oracleConnection

    此时只需要简单调用Class.forName(com.java.dbtest.myqlConnection)即可动态得完成加载类的过程。

    利用反射机制对类进行两次加载

    import java.io.IOException;
    import java.io.InputStream;
    public class Main{
        public static void main(String args[]) throws Exception{
            //自定义类加载器
            ClassLoader myLoader = new ClassLoader() {
                @Override
                public Class<?> loadClass(String name) throws ClassNotFoundException{
                    try{
                        String fileName = name.substring(name.lastIndexOf(".") + 1) + ".class";
                        InputStream is = getClass().getResourceAsStream(fileName);
                        if(is == null) {
                            return super.loadClass(name);
                        }
                        byte[] b = new byte[is.available()];
                        is.read(b);
                        return defineClass(name, b, 0,  b.length);
                    }catch(IOException e) {
                        throw new ClassNotFoundException(name);
                    }
                }
            };
            //使用反射机制加载并实例化
            Object obj = myLoader.loadClass("Main").newInstance();
    
            System.out.print(obj instanceof Main);
    
        }
    }
    
    //结果为false
    

    由于开始阶段通过双亲委派模型,由系统应用程序类加载器已经加载过该类,运行阶段,使用自定义的类加载器,基于反射机制,又加载一遍类,分别由两个不同的类加载器,加载一遍,所以程序最后的结果是false.

    展开全文
  • 今天总结了java反射面试题10道,各位java程序员可以根据这篇java反射面试题,来回顾一下java反射的相关知识。1、java反射的作用是什么?答:反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法...

    反射机制是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。今天总结了java反射面试题10道,各位java程序员可以根据这篇java反射面试题,来回顾一下java反射的相关知识。

    1、java反射的作用是什么?

    答:反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

    2、Java反射创建对象效率高还是通过new创建对象的效率高?

    答:通过new创建对象的效率比较高。通过反射时,先找查找类资源,使用类加载器创建,过程比较繁琐,所以效率较低。

    3、除了使用new创建对象之外,还可以用什么方法创建对象?

    答:使用Java反射可以创建对象。

    4、反射的实现方式都有什么?

    答:获取Class对象,有4种方法:(1)Class.forName(“类的路径”);(2)类名.class;(3)对象名.getClass();(4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象。

    5、实现java反射的类有什么?

    答:(1)Class:表示正在运行的Java应用程序中的类和接口,注意所有获取对象的信息都需要Class类来实现;

    (2)Field:提供有关类和接口的属性信息,以及对它的动态访问权限;

    (3)Constructor:提供关于类的单个构造方法的信息以及它的访问权限;

    (4)Method:提供类或接口中某个方法的信息。

    6、反射机制的优缺点:

    答:优点(1)能够运行时动态获取类的实例,提高灵活性;(2)与动态编译结合Class.forName('com.mysql.jdbc.Driver.class');//加载MySQL的驱动类

    缺点:使用反射性能较低,需要解析字节码,将内存中的对象进行解析。

    其解决方案是:通过setAccessible(true)关闭JDK的安全检查来提升反射速度;多次创建一个类的实例时,有缓存会快很多;ReflflectASM工具类,通过字节码生成的方式加快反射速度。

    7、Java反射API有几类?

    答:反射 API 用来生成 JVM 中的类、接口或则对象的信息。

    (1)Class 类:反射的核心类,可以获取类的属性,方法等信息。

    (2)Field 类:Java.lang.reflec 包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。

    (3)Method 类:Java.lang.reflec 包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。

    (4)Constructor 类:Java.lang.reflec 包中的类,表示类的构造方法。

    8、反射使用步骤(获取Class对象、调用对象方法)

    答:(1)获取想要操作的类的Class对象,他是反射的核心,通过Class对象我们可以任意调用类的方法。

    (2)调用 Class 类中的方法,既就是反射的使用阶段。

    (3)使用反射 API 来操作这些信息。

    9、Java反射机制的作用有什么?

    答:作用有(1)在运行时判断任意一个对象所属的类;(2)在运行时构造任意一个类的对象;(3)在运行时判断任意一个类所具有的成员变量和方法;(4)在运行时调用任意一个对象的方法。

    10、下面的代码哪些地方会产生编译错误?

    class Outer {

    class Inner {

    }

    public static void foo() {

    new Inner();

    }

    public void bar() {

    new Inner();

    }

    public static void main(String[] args) {

    new Inner();

    }

    }

    答:Java中非静态内部类对象的创建要依赖其外部类对象,上面的面试题中foo和main方法都是静态方法,静态方法中没有this,也就是说没有所谓的外部类对象,因此无法创建内部类对象,如果要在静态方法中创建内部类对象,可以这样做:

    new Outer().new Inner();

    在java编程中,用到反射的地方还是很多的,比如java框架就大量使用反射,还有在加载驱动和读取配置文件时,反射也是比不可少的。所以在java面试中,面试官会想要考察应聘者反射方面的知识,那么有面试需要的朋友,就必须提前做好准备,将能搜集到的java反射面试题整理到一起记住,另外,java零基础的小白也可以根据这篇java反射面试题来认识java反射。

    展开全文
  • 但是java语言中还有一个非常强大的特性:反射机制,本就可以通过反射机制来修改age的值。  在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法...

    有如下代码:

    public class ReadOnlyClass {
    	private Integer age=20;
    	public Integer getAge() {
    		return age;
    	}
    }
    

    现在给定一个ReadOnlyClass的对象roc,能否把这个对象的age值改成30?

     

    ***************************************************************************************************************************************************

    题目分析:在本题中,age属性被修饰为private,而且这个类只提供了获取age的public的方法,而没有提供修改age的方法,因此这个类是一个只读的类,无法修改age的值。但是java语言中还有一个非常强大的特性:反射机制,本题就可以通过反射机制来修改age的值。

           在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取对象的信息以及动态调用对象的方法的功能称为java语言的反射机制。java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的class。说白了,就是java可以加载一个运行时才得知名称的class,获得其完整结构。

          在java语言中,任何一个类都可以得到对应的class实例,通过class实例就可以获取类或对象的所有信息,包括属性(Field对象)、方法(Method对象)或构造方法(Constructor对象)。对于本题而言,在获取到ReadOnlyClass类的实例后,就可以通过反射机制获取到age属性对应Field对象,然后可以通过这个对象来修饰age的值,实现代码如下:

    package InterView;
    
    import java.lang.reflect.Field;
    
    class ReadOnlyClass {
    	private Integer age=20;
    	public Integer getAge() {
    		return age;
    	}
    }
    public class Test{
    	public static void main(String[] args) throws Exception {
    		ReadOnlyClass pt=new ReadOnlyClass();
    		Class<?>class1=ReadOnlyClass.class;
    		Field field=class1.getDeclaredField("age");
    		field.setAccessible(true);
    		field.set(pt, 30);
    		System.out.println(pt.getAge());
    	}
    }

    展开全文
  • java面试题--java反射机制

    千次阅读 2017-08-26 00:00:58
    java面试题--java反射机制
  • Java反射常见面试题

    2020-01-04 11:44:39
    Java反射常见面试题 什么是反射反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的...
  • java面试题--反射机制

    2018-11-14 17:31:05
    面试经典题型,很值得分享的。 我们面试经常会遇到的问题。
  • 反射常见面试题

    千次阅读 2019-11-08 10:10:41
    这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。 哪里用到反射机制? 1.JDBC中,利用反射动态加载了数据库驱动程序。 2.Web服务器中利用反射调用了Sevlet的服务方法。 3.Eclispe等开发...
  • 1、反射机制的概念: 1.1、指在运行状态中 对于任意一个类,都能够知道这个类的所有属性和方法, 对于任意一个对象,都能调用它的任意一个方法. 这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制...
  • 什么是反射机制反射机制是Java语言中一个非常重要的特性。它允许程序在运行时进行自我检查。他同时也允许对其内部的成员进行操作,虽然这个特性在实际开发时使用的不多。但是像C/C++等语言根本没有提供这样的特效...
  • 反射机制是Java语言中一个非常重要的特性,它允许程序在运行时自我检查,同时也允许对其内部的成员进行操作。由于反射机制能够实现在运行时对类进行装载,因此能够增加程序的灵活性,但是不恰当地使用反射机制,也会...
  • Java 反射相关面试题

    2020-12-14 17:12:15
    JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取类的信息以及动态调用对象的方法的功能称为 java 语言的反射...
  • 反射面试题

    2018-07-11 19:51:00
    JavaSE——反射面试题 1.请描述一下类加载机制,然后说明一下什么是反射机制,以及反射的常见调用方式。 类加载机制:java源文件经过编译后产生一个字节码文件。Java虚拟机把描述类的数据加载到内存中,对数据进行...
  • 关于反射面试题

    2019-09-29 11:25:05
    Java反射机制主要提供了以下功能:在运行时构造一个类的对象;判断一个类所具有的成员变量和方法;调用一个对象的方法;生成动态代理。反射最大的应用就是框架 Java反射的主要功能: 确定一个对象的类 取出类的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 642
精华内容 256
关键字:

反射机制面试题