java习题 chp15_8 (反射)完成下面功能已知有接口定义如下:
2020-06-06 06:35
169 查看
文章目录
8. **(反射)完成下面功能已知有接口定义如下:
public interface Person{ void setName(String name); void setAge(int age); void work(); }
1)为Person 创建两个实现类,一个Teacher 表示老师,一个Cook 表示厨师。在Teacher 类的work 方法中输出”Teacher teach”,在Cook 的work 方法中输出”Cook make meals”。2)创建一个配置文件,格式如下:
Teacher
tom
18
第一行表示相应的实现类;
第二行表示相应的名字
第三行表示相应对象的年龄
3)读取配置文件,根据配置文件的信息,创建相应的对象,并调用对象的work 方法。
Person.java
package chp15_8; public interface Person { void setName(String name); void setAge(int age); void work(); }
Cook .java
package chp15_8; public class Cook implements Person{ private String name; private int age; @Override public void setName(String name) { // TODO Auto-generated method stub this.name=name; } @Override public void setAge(int age) { // TODO Auto-generated method stub this.age=age; } @Override public void work() { // TODO Auto-generated method stub System.out.println("Cook make meals"); } }
Teacher .java
package chp15_8; public class Teacher implements Person{ private String name; private int age; @Override public void setName(String name) { // TODO Auto-generated method stub this.name=name; } @Override public void setAge(int age) { // TODO Auto-generated method stub this.age=age; } @Override public void work() { // TODO Auto-generated method stub System.out.println("Teacher teach"); } }
Test .java
package chp15_8; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Scanner; public class Test { public static void main(String[] args) throws InstantiationException, IllegalAccessException { Scanner sc = new Scanner(System.in); System.out.println("输入Teacher or Cook"); String s = sc.next(); System.out.println("输入名字"); String name = sc.next(); System.out.println("输入年龄"); int age = sc.nextInt(); try { //通过类名获取类对象 Class<?> c = Class.forName("chp15_8."+s); //创建一个实例化对象 Object obj = c.newInstance(); //获取当前类型方法 Method setName = c.getMethod("setName", String.class); Method setAge = c.getMethod("setAge", int.class); Method work = c.getMethod("work"); //调用方法 work.invoke(obj); setName.invoke(obj, name); setAge.invoke(obj, age); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- java习题 chp12_15 *(多线程)完成下列程序要求有个Student 类,代码如下:
- 【java】调用百度开发平台ai接口,完成人脸识别(人脸搜索、人脸对比、人脸检测等)功能--------超详细,适合小白
- 编写一个文件,读取 src 下面day12包 下面的my.properties 文件,文件内容如下, className=day12.User 结合 IO、反射知识,完成 配置文件中对象的创建和方法调用。并编写方法,列举出 Student 类中所有的属性、
- 使用java.nio及其子包中的类SocketChanel完成如下功能:读取www.baidu.com等网页的内容,打印到控制台,避免中文乱码问题。
- 【练习题】定义一个字典类:dictclass。完成下面的功能:
- 历年世界杯冠军队伍如下,使用map存储这些队伍,使用年份作为key,冠军队伍名称作为value。 完成下面的功能: 1) 输入一个年份,如果当年有世界杯比赛,则输出获奖队伍,如果没有则输出“当年没有举
- java反射,反射常用方法,获取类模板,通过类模板对象创建实体对象,类中未定义有参或无参构造器的情况下创建对象,不调用方法尝试给一个类的私有属性赋值,通过反射获取一个类的父类并获取它实现的接口
- 黑马程序员--Java基础加强--15.利用反射操作泛型IV【通过反射Method解析泛型方法思路】【通过Method对四种Type子接口类型进行解剖】【使用递归对任意复合泛型类型进行彻底解剖】【个人
- [基础题]8.(*)按如下要求编写Java程序:(1)定义一个交通工具收费接口Charge
- Java 反射与内省的定义
- java中接口的定义与实现
- 用 Java 接口实现回调函数的等价功能
- Java中接口的定义与实现接口抽象方法
- java接口的定义
- 腾讯 iweibo Java API 1.2.1 补充头像和个人信息更新功能接口
- java的反射技术功能十分强大,整理一些资料!!
- 通过类字面常量解释接口常量为什么只能定义为static final,类加载过程---Thinking in java
- 实现 java 执行 cmd 命令,打印输出,等待cmd 完全执行完成后才执行下面代码
- java通过反射,泛型将定义的对象与对象之间互转
- C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义