JAVA实例化并以接口运行

已知道接口 TestInf (定义方法 t1), 已知道实现类 TestImpl(含方法 t1 ,t2) ,现根据方法名称,通过类反射来调用其中的方法。两个类型都是动态获取的。
要求只能调用TestInf中含有的方法。现在是通过判断方法名称如果在TestInf中没有就 报错。

说简单点就 是实现静态代码:
TestInf test = new TestImpl();

请教如何实现?
附加说明: 不是描述注入之类的,就是想动态实例化对象,但要转成一个接口,接口是暴露给第三方系统使用,所以接口中的方法个数会少于对象的方法个数。由于涉及很多个服务,所以要通过类反射来调用。

不太明白你的意思,今天学了spring,感觉你表达的意思和spring中的注入机制类似。仅供参考

使用动态代理实现
接口A 实现类B
使用动态代理创建的对象中只能使用接口A中定义的方法。在调用方法时,会通过反射调用实现类B
示例:

public interface Subject {
    public void rent();
    public void hello(String str);
}

public class RealSubject implements Subject {
    @Override
    public void rent() {
        System.out.println("I want to rent my house");
    }

    @Override
    public void hello(String str) {
        System.out.println("hello: " + str);
    }
}

动态代理类

public class DynamicProxy implements InvocationHandler {

    private Object subject;

    public DynamicProxy(Object subject) {
        this.subject = subject;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args)  {
        Object rs = method.invoke(subject, args);
        return rs;
    }
}

调用

Subject realSubject = new RealSubject();
        InvocationHandler handler = new DynamicProxy(realSubject);
        Subject subject = (Subject) Proxy.newProxyInstance(handler.getClass().getClassLoader(), realSubject.getClass().getInterfaces(), handler);
        subject.rent();
        subject.hello("123");