package com.test.reflect;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
public class Reflect01 {
public static void main(String[] args) throws Exception {
School s = new School();
s.build();
// s.getComplete(new People());
// s.getComplete(new Equipment());
Properties pro = new Properties();
// FileInputStream in = new FileInputStream("E:\\workspace\\reflect\\bin\\complete.properties");
// InputStream in = new BufferedInputStream (new FileInputStream("E:\\workspace\\reflect\\bin\\complete.properties"));
// InputStream in = Reflect01.class.getResourceAsStream("/complete.properties");
InputStream in = Reflect01.class.getClassLoader().getResource("\\complete.properties").openStream();
pro.load(in);
for(int i = 0;i < pro.size();i++) {
String className = pro.getProperty("complete"+(i+1));
Class<?> clazz = Class.forName(className);
Complete c = null;
if(className.contains("People")) {
c = (People)clazz.newInstance();
s.getComplete(c);
}
if(className.contains("Equipment")) {
c = (Equipment)clazz.newInstance();
s.getComplete(c);
}
}
}
}
package com.test.reflect;
public class School {
public void build() {
System.out.println("school ok!");
}
public void getComplete(Complete c) {
if(c != null) {
c.findComplete();
}
}
}
package com.test.reflect;
public interface Complete {
public void findComplete();
}
package com.test.reflect;
public class People implements Complete{
@Override
public void findComplete() {
this.findTeacher();
enrollStudents();
}
public void findTeacher() {
System.out.println("Here comes the teacher!");
}
public void enrollStudents() {
System.out.println("many students!");
}
}
package com.test.reflect;
public class Equipment implements Complete{
@Override
public void findComplete() {
buildHall();
buildStadium();
}
public void buildStadium() {
System.out.println("stadium ok!");
}
public void buildHall() {
System.out.println("have a beautiful hall!");
}
}
*complete.properties
complete1=com.test.reflect.People
complete2=com.test.reflect.Equipment