有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

仅定义方法名称的Java接口(即变量参数)

假设我想创建一些CRUD资源。每个都有createupdatedeletefetchlist方法。所有这些函数的返回类型都是相同的,但是这些函数的参数是不同的

是否有一种方法可以创建一个定义返回类型和方法名的接口,但允许变量参数

比如说,

class User implements CRUD {
    int create(final String first_name, final String last_name);
}

class Country implements CRUD {
    int create(final String name);
}

两者都有一个返回intcreate方法,但每个方法都有一个不同的参数


共 (3) 个答案

  1. # 1 楼答案

    不,唯一有一些限制的黑客方法是定义方法签名,如下所示

    int创建(字符串…参数)

    这样,您只能提供字符串参数,所有实现类都应该以预定义的方式解析给定的输入数组

    最后,这是个坏主意

  2. # 2 楼答案

    键入接口:

    interface CRUD<T> {
        int create(T arg);
    }
    

    其中T可以是List<String>String[]或值对象

    或者,要更改参数的数量(如果参数类型相同):

    interface CRUD {
        int create(String... args);
    }
    
  3. # 3 楼答案

    @Bohemian解决方案的一个特色是有一个通用接口和封装方法参数的对象

    class UserParam {
        String fristName;
        String lastName;
    }
    
    class CountryParam {
        String name;
    }
    
    interface CRUD<T> {
        int create(T param);
    }
    
    class User implements CRUD<UserParam> {
        int create(UserParam param) {
            // do something based on received param of type UserParam
        }
    }
    
    class Country implements CRUD<CountryParam> {
        int create(CountryParam param) {
            // do something based on received param of type CountryParam
        }
    }