package com.sl.one;
import java.io.IOException;
import java.util.Properties;
public class TestClassLoad
{
public static void main(String[] args) throws Exception
{
Properties ps = new Properties();
ps.load(TestClassLoad.class.getClassLoader().getResourceAsStream("job.properties"));
System.out.println(ps.getProperty("C"));
Class<?> c = Class.forName(ps.getProperty("C"));
System.out.println(c);
Mapper in = (Mapper) c.newInstance();
in.test();
}
}
注意以下几点
-
配置文件放在src目录下,不是放在包里,不然肯定错。
-
配置文件里类的路径方法:打开那个类,然后选中类名,然后复制全地址,不要在左边项目栏里复制,会出错
-
newInstance()是根据那个类创建实例,然后根据实例调用方法
-
配置文件不要加引号!!!!
有以下几点用途: -
面向接口 编程,定义一个接口,接口的实现类可以是任何类名,只需要在配置文件中给出类名和路径就好,这样就可以在源程序中直接调用别人写好的实现类,而不用考虑类名的问题
CLASSO=com/sl/one/WordCountImp 错
CLASS=/Hadoop/src/com/sl/one/WordCountImp 错
C=com.sl.one.WordCountImp 对