框架的意思就是预先给定一个程序,他可以调用你所给定的程序或任何东西。这样你就可以利用这个框架快速的做一些你想做的事。
反射也能建立框架,比如你可以新建一个配置文件,还有一个预先写好的程序,这样只要在配置文件中修改即可。
我们这里的程序给定了一个config.properties配置文件,这样用户只要在这个配置文件中修改集合的特定类型,即可使用。
import java.io.FileInputStream;
import java.lang.reflect.Constructor;
import java.util.Collection;
import java.util.Iterator;
import java.util.Properties;
public class ReflectTest {
public static void main(String[] args) {
try {
FileInputStream fin = new FileInputStream("config.properties");
Properties p = new Properties();
p.load(fin);
String cstr = p.getProperty("collection");
Constructor con = Class.forName(cstr).getConstructor(null);
Collection col = (Collection) con.newInstance(null);
fin.close();
ReflectPoint p1 = new ReflectPoint(1, 1);
ReflectPoint p2 = new ReflectPoint(2, 2);
ReflectPoint p3 = new ReflectPoint(1, 1);
ReflectPoint p4 = new ReflectPoint(4, 4);
col.add(p1);
col.add(p2);
col.add(p3);
col.add(p4);
Iterator i = col.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class ReflectPoint {
private int x;
private int y;
public ReflectPoint(int x, int y) {
super();
this.x = x;
this.y = y;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ReflectPoint other = (ReflectPoint) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
}