「java反射题目」JAVA 反射
今天给各位分享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 反射的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-25,除非注明,否则均为
原创文章,转载请注明出处。