编写一个程序,从文本文件的第一行读入类名,要求输出类的修饰符、父类、实现的接口,及类中所有定义的Field, Constructor, Method。从文本文件的第二行读入类中的一个无参数的方法名,要求调用类的这个无参数的实例方法,如果方法有返回值,则输出方法执行后的返回值。
注意:文本中的类名可以是用户自定义的一个类,该类中要有一个无参数的方法,方法中你可以输出任何内容,也可以返回一个值。
fangshe.java
package first;
import static java.lang.System.out;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.lang.reflect.*;
import java.util.ArrayList;
public class fangshe extends human1 implements human{
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception{
FileInputStream fis=null;
InputStreamReader isr=null;
BufferedReader br=null;
try {
String str;
ArrayList strArr=new ArrayList();
fis=new FileInputStream("d:\\test.txt");
isr=new InputStreamReader(fis,"UTF-8");
br=new BufferedReader(isr);
while((str=br.readLine())!=null) {
strArr.add(str);
}
Class c=Class.forName((String) strArr.get(0));
System.out.println(c);
String mdf=Modifier.toString(c.getModifiers());
System.out.println("该类的修饰符为:"+mdf);
/*//
Method m1 = c.getMethod("getAge",String.class);
System.out.println("指定方法的输出为:"+m1.invoke(c));*/
Class spc=c.getSuperclass();
System.out.println("该类型的父类为:"+spc);
Type[] itfs=c.getGenericInterfaces();
if(itfs.length!=0) {
for(Type itf:itfs)
out.format("该类实现的接口为:"+itf.toString());
}else out.format("该类没有实现接口!");
Field[] fs=c.getDeclaredFields();
System.out.println();
System.out.println("该类的成员变量为:");
for(Field f:fs){
System.out.println(f.toGenericString());
}
Constructor[] cons=c.getDeclaredConstructors();
System.out.println();
System.out.println("该类的Constructor方法为:");
for(Constructor con:cons){
System.out.println(con.toGenericString());
}
Method[] ms=c.getMethods();
System.out.println();
System.out.println("该类的Method方法为:");
for(Method m:ms){
System.out.println(m.toGenericString());
}
@SuppressWarnings("rawtypes")
Constructor con=c.getDeclaredConstructor(String.class,int.class);
System.out.println();
System.out.println("输出值为:");
Object o1=con.newInstance("Mary",20);
out.format(o1.toString());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public String fun() {
return null;
// TODO Auto-generated method stub
}
}
human.java
package first;
interface human {
//接口方法声明为抽象类
public String fun();
}
human1.java
package first;
public class human1 {
public String sex;
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
student.java
package first;
public class student extends human1 implements human{
//Field
public String name;
public int id;
private int age;
//Constructor
public student(String name,int id,int age) {
super();
this.name=name;
this.id=id;
this.age=age;
}
public student(String name, int age) {
super();
this.name = name;
this.age = age;
//this.setSex(sex);
}
//Method
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private int getAge() {
return age;
}
private void setAge(int age) {
this.age = age;
}
@Override
public String fun() {
// TODO Auto-generated method stub
return "调用fun方法";
}
public String method() {
return "abc";
}
@Override
public String toString() {
return "student [name=" + name + ", age=" + age + "]";
}
}
创建文本内容如下(自行创建一个txt文件):