关于#Java#的问题,如何解决?

请问。Java在不修改源码的前提下,如何扩展一个接口。并可以通过原接口调用扩展出来的新方法。这可能实现吗?怎么实现啊?

这个要看具体的业务要做什么,要扩展什么才可以确定方案

1.首先,需求太笼统了,不知道你想干什么
2.你如果是要搞多态,同一个函数不同子类下有不同的实现,是容易搞的,但是你想原来能调用一个方法,现在能随意调用两个方法,还不改原来的代码,那是在想PEACH

增加一个接口,接口A继承接口B

public interface A extends B{
    void Aa();
}

interface B{
    void Bb();
}

class C implements A{

    @Override
    public void Aa() {
        
    }
    @Override
    public void Bb() {

    }
}

通过添加切面的形式,可以在调用A方法后,加处理逻辑。但是在A方法过程中,不行的。

修改字节码,代理,切面等。

自定义一个接口,实现你说的接口,然后把调用原接口-改为调用你的接口,不就行了

如果是spring 项目就超级简单 写个扩展模块, 用切面或者代理的方式,可以更容易是实现, 然后通过一些简单的手段就可以集成到原有项目中
如果不是常用框架, 那就从最顶层进行拦截, 比如说写一个接口代理项目, 更改原有项目使用端口, 代理项目占用原端口,拦截全部原有工程的接口请求,并对请求进行转发, 这样你就可以写条件判断, 处理你想处理的接口了, 并且用户无感.

可以实现,直接引用另外一个接口就行。

class test{
方法 a{
    int num3 = 0;
 int num1 = 1;
 int num2 = 2;
   num1 + num2 = num3;
//获取两个数相乘的结果
       int  result =    方法b(num3,num2);
}
int  方法b (int a,int b){
      int c=0;
      a*b=c;
return c;
}
}


引用你刚刚的描述:比如我现在有一个接口A class interface A { void Aa();}我现在想给A拓展一个Ab的方法,并且希望通过A调用这个新方法Ab(), 这样的可以实现吗?
不修改的情况下,实现不了。
因为A类本身就没有这个方法,除非给A接口加这个方法。或者使用代理增强A实现类,扩展出你要的效果。或者写一个B类继承A类,在B中添加新方法,但是用A类是调不到新方法的。
另外不知道背景是啥,以及你说的源码是框架的源码还是项目本身的代码。


如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

实现一个接口,继承原接口,再进行拓展

再写一个接口,它能调用原接口,也能调用你新加的接口呗