反射机制与工厂类的简单实现。
package helloworld;
interface IFruit {
void eat();
}
class Orange implements IFruit {
@Override
public void eat() {
System.out.println("eat orange");
}
}
interface IMessage {
void print();
}
class MyMessage implements IMessage {
@Override
public void print() {
System.out.println("java");
}
}
class Factory{
private Factory(){
}
@SuppressWarnings("unchecked")
public static <T> T getInstance(String str) {
T t = null;
try {
t = (T)Class.forName(str).newInstance();
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
e.printStackTrace();
}
return t;
}
}
public class FactoryLearn {
public static void main(String[] args) {
Orange orange = Factory.getInstance("helloworld.Orange");
orange.eat();
MyMessage msg = Factory.getInstance("helloworld.MyMessage");
msg.print();
}
}