当前位置: 首页 > 知识库问答 >
问题:

如何合并两个实现相同但参数类型不同的方法

柳星晖
2023-03-14

我的两个方法中的操作是相同的,但是输入参数类型不同,那么我该如何优化这两个方法,似乎没有那么重复?因为它们的操作是相同的,但参数类型不同,我该怎么做才能使这段代码更优雅呢?

java prettyprint-override">public class Main {

    public static void main(String[] args) {
        BaseStudent baseStudent = new BaseStudent();
        baseStudent.setName("base");
        NbdStudent nbdStudent = new NbdStudent();
        nbdStudent.setName("nbd");
        updateName(baseStudent);
        updateName(nbdStudent);
    }

    private static void updateName(BaseStudent student) {
        student.setName("update base");
    }

    private static void updateName(NbdStudent student) {
        student.setName("update base");
    }

}

共有1个答案

邓阳炎
2023-03-14

正如@k.vu所建议的,您可以创建一个抽象类student,它将由baseStudentnbdstudent:

public asbtract class Student {
  private String name;

  public void setName(String name) {
  ...

public class BaseStudent extends Student {
...

public class NbdStudent extends Student {
...

public class Main {
  private static void updateName(Student student) {
    student.setName("update base");
    ...
 类似资料:
  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。

  • 我有两个数据类型不同的方法,但正文相同。我没有使用任何。我只使用这些方法来引发异常。有没有什么方法可以将这两种方法结合起来,或者有什么方法可以优化代码? PS:我不想使用接口或一些具有普通逻辑的新方法。

  • 我正在尝试合并两个不同类型的列表。我得到了两个不同的API响应从改造在一个android应用程序,第一个列表是一个电影列表定义为 公共类列表{ 我通过以下操作成功地从API中检索到列表 然后,我尝试将一个类型列表和一个类型字符串列表组合起来,以创建一个新类ListingAndImage(字符串是一个URL,我将加载到imageview中) 我的问题是,哪种方式最好将这两个列表组合起来,形成一个列表

  • 因此,我正在创建一个用户API,并尝试在登录前调用getUserByEmail()。我的问题是,我得到了一个不明确的处理程序方法映射为HTTP路径错误。 我知道我的问题与我有一个相同但参数类型不同的GET有关。任何帮助都将不胜感激!

  • 我改变了切入点的顺序,它总是排在第二位。关于如何解决这个问题有什么想法吗? 更新 一旦我发布了这个问题,我就有了一个想法。我这样更改了切入点: 现在异常消失了,但仍然有一个小问题(我想这个问题更容易解决):因为ArrayList实现了可序列化,所以至少在我使用ArrayList的测试用例中,两个切入点都被执行了。 我将对此进行研究,并发布我的发现,但也感谢您的帮助;) 我将代码改为只使用一个切入点

  • 但是,要添加到我的txt文件中的事务列表的类型是Transaction,而不是String。 作为一个例子,这里有一些用户存款情况下的代码。 理想情况下,我希望代码读取用户以前的事务,将他们的新事务添加到txt文件的末尾,然后在用户完成时将所有这些事务保存到同一个txt文件中。有没有一种方法可以读取用户以前的事务类型为Transaction而不是String,或者以某种方式将这两个列表组合起来,给