「java反射题目」JAVA 反射

博主:adminadmin 2022-12-25 15:21:06 66

今天给各位分享java反射题目的知识,其中也会对JAVA 反射进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Java反射问题?

按照你的要求编写的用反射调用test方法的Java程序如下

Outter.java文件

public class Outter {

private Inner in;

public Outter(){

in=new Inner();

}

private class Inner {

private void test(){

System.out.println("test");

}

}

}

Client.java文件

import java.lang.reflect.Method;

import java.lang.reflect.Constructor;

import java.lang.reflect.Modifier;

public class Client {

@SuppressWarnings({ "rawtypes", "unchecked" })

public static void main(String[] args) throws Exception {

Class clzz = Outter.class;

Constructor con = clzz.getDeclaredConstructor();

Outter outObj = (Outter) con.newInstance();

Class innerClazz[] = clzz.getDeclaredClasses();

for (Class c : innerClazz) {

    int mod = c.getModifiers();

   String modifier = Modifier.toString(mod);

if (modifier.contains("private")) {

   Constructor cc = c.getDeclaredConstructor(clzz);

    cc.setAccessible(true);

    Object obj=cc.newInstance(outObj);

  Method m=c.getDeclaredMethod("test");

  m.setAccessible(true);

  m.invoke(obj);

}

}

}

}

java题目 反射

public class StudentManager

{

    private MapInteger,Student students;

    

    public StudentManager(MapInteger,Student students)

    {

        this.students = students;

    }

    

    //增加一个学生的方法

    public void addStudent(Student s)

    {

        //操作Map对象,把学生添加到该Map中

        if(this.students.containsKey(s.getStuId())) {

            this.students.put(s.getStuId(), s);

        }

        throw new RuntimeException("the student already exist");

    }

    

    //删除学生的方法

    public void delStudent(int stuId)

    {

        //根据学生的学号,把该学生从管理系统中删除

        if(this.students.containsKey(stuId)) {

            throw new RuntimeException("cannot find the student");

        }

        this.students.remove(stuId);

    }

    

    //修改学生的方法:注意只修改学生的姓名和年龄

    public void updStudent(Student s)

    {

        //根据传入的学生的学号进行信息的修改

        if(this.students.containsKey(s.getStuId())) {

            this.students.put(s.getStuId(), s);

        } else {

            throw new RuntimeException("cannot find the student");

        }

    }

    

    //查询当前所有学生

    public void queryStudent()

    {

        //把Map中的学生信息进行迭代,并显示

        for(Integer key : this.students.keySet()) {

            System.out.println(this.students.get(key));

        }

    }

}

java反射问题

一个标准的javabean类所有字段都是私有的.然后提供该字段的GET,SET.这个是前提!1.该字段的SET方法有可能加了拦截代码.有些值不赋进去.例如你做一个注册.要填性别的时候就只能填男女.其他不能填的就会用拦截代码拦截掉.2.如果你用反射,就有方法直接访问那个字段,无论那字段是否私有.赋值的时候用的是JAVA反射包里Field类(java.lang.reflect.Field)里提供的SET方法其实就相当于直接赋值.不用经过其他拦截代码.即不用经类本身字段的SET方法3.反射的意义体现了它能对项目的旷展性上.例如你要实例化一个业务类.普通:Demod=newDemo();------------------------------------反射:Demod=Class.forName(`类全名`);//可以直接通过类名就实例化一个对象,不用直接NEW//而类名可以写在配置文件上面.用IO.读进来用就可以了.//这样写得话,到时候要升级业务需求的时候,要换一个实现类,就不用其他改动源码,把新写好的业类类全名直接写在配置文件上就可以了

关于java反射题目和JAVA 反射的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。