java高级用用编程基础练习题6

编写一个程序,从文本文件的第一行读入类名,要求输出类的修饰符、父类、实现的接口,及类中所有定义的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文件):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值