作业
1 已知一个类,定义如下:
public class DemoClass {
public void run() {
System.out.println("welcome to ujiuye!");
}
}
(1) 写一个Properties格式的配置文件,配置类的完整名称。
(2) 写一个程序,读取这个Properties配置文件,
获得类的完整名称并加载这个类,
用反射的方式运行run方法。
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;
/*1 已知一个类,定义如下:
public class DemoClass {
public void run() {
System.out.println("welcome to ujiuye!");
}
}
(1) 写一个Properties格式的配置文件,配置类的完整名称。
(2) 写一个程序,读取这个Properties配置文件,
获得类的完整名称并加载这个类,
用反射的方式运行run方法。*/
public class Homework01 {
public static void main(String[] args) throws Exception {
Properties p = new Properties();//新建Properties对象
InputStream is = new FileInputStream("config.properties");
//配置文件内容:ClassName=com.xiongluoluo.homework.DemoClass
//新建输入流,关联config.properties文件
p.load(is);
//将输入流加载进Properties对象中
String classWholeName = (String)p.get("ClassName");
/*通过Properties对象(继承HashTable,可以使用方法getProperty(key)通过键取值,
也可以用map集合中的get(key)通过键取值),取得类的完整名称*/
Class c = Class.forName(classWholeName);
//通过Class.forName("完整类名")取得该类的字节码对象.
Method m = c.getMethod("run");
//通过getMethod("方法名",参数(没有可不写))获得run方法
m.invoke(c.newInstance());//直接调用就行
}
}
2、编译一个简单的计算器类(完成整数的加、减、乘、除计算的方法),使用Junit编程测试类并测试成功
import org.junit.Test;
/*2、编译一个简单的计算器类(完成整数的加、减、乘、除计算的方法),使用Junit编程测试类并测试成功*/
public class Calc {
//加法
public int Add(int a,int b) {
return a+b;
}
@Test
public void testAdd() {
System.out.println(Add(3,4));
}
//减法
public int Sub(int a,int b) {
return a-b;
}
@Test
public void testSub() {
System.out.println(Sub(5,6));
}
//乘法
public int Mul(int a,int b) {
return a*b;
}
@Test
public void testMul() {
System.out.println(Mul(5,6));
}
//除法
public int Div(int a,int b) throws Exception {
if(b==0) {
throw new Exception("憨批,除数能为0?????");
}else {
return a/b;
}
}
@Test
public void testDiv() throws Exception {
System.out.println(Div(5,6));
}
}