1.正常实例化类
User user=new User();
2.通过反射进行实例化 等于正常实例化
User user =(User) Class.forName("com.xq.kafka.demo.User").newInstance();
3.反射demo
(1)接口
public interface IUser { String getName(); void setName(String name); }
(2)实现 redis、hbase、mysql等等
public class RedisUserImpl implements IUser { private String name; @Override public String getName() { //从redis取数据 return this.name; } @Override public void setName(String name) { //往redis写数据 this.name = name; } }
public class HbaseUserImpl implements IUser { @Override public String getName() { //从hbase取数据 return null; } @Override public void setName(String name) { //往hbase写数据 } }
(3)通过反射进行实例化,可以选择不同的实现方式
IUser iUser =(IUser) Class.forName("com.xq.kafka.demo.RedisUserImpl").newInstance(); iUser.setName("1"); System.out.println(iUser.getName());
可参考:https://blog.csdn.net/litianxiang_kaola/article/details/78634822
反射的好处:运行时找实例化的类,可通过配置文件进行配置