gpt4 book ai didi

java - 是否有已知的方法可以在 OOP 中使 API 参数签名动态化?

转载 作者:行者123 更新时间:2023-12-02 04:00:38 25 4
gpt4 key购买 nike

无需定义重载方法和构造函数,我正在自学Java,我在想是否有一种算法或技巧可以让您动态更改参数参数的数量以满足我需要的一般编程不同类型的数据参数。例如,

class Example{
public Example(){
}
/** the method bellow is not practical, but assume you wish to do something like this */
public String userDetails(Dynamic (either an int, a String_array, String or C), char append){
String[] fullName; //define fullName
int age; //define age
char appends // define appends
if( num == age); // assume it is age and return age,
if(fullName.equals(names[]); // assume it is full name return full name list
if(.equals(char); //assume it is an append of name
if (appends.equals(append); // it is an alien
return null;
}

上面代码的更多分割应该是这样的

//任何数据都可以传递到此参数中,因为该参数是动态的,并会根据接收到的内容进行调整public void userDetails(Dynamic (int, String[], String, char{ 中的任意一个)/通常,如果 String 只接受参数,并且传递 int ,则会发生不匹配的错误,如果 string 和 int 都接受,则只传递两者中的一个,会发生相同的错误,想法是允许任何类型被通过或者甚至根本不被通过,而我们不必担心捕获异常/ }

想法是将任何类型的数据传递给未重载的方法,并且该方法将自动调整以适应传递给它的数据。传统上如果你需要一个String和Integer作为参数,你必须在参数中分别定义一个String,但是如果你需要一个字符串或整数怎么办,Dynamic可以智能地接受两者中的任何一个。

注意:Dynamic本身不是一个类,而是一个概念

正如你所看到的,这完全是胡言乱语,但出于解释的目的,无论如何,即使不是以这种方式(除了重载方式)也可以实现这一点?

最佳答案

你可以破解它,

通过像这样签署你的方法:

Object dynamicFunction(Object ... params)

这将为您提供一种控制参数的通用方法

例如:

public static Object dynamicFunction(Object ... params){
System.out.println(params.length);
return null;
}

public static void main (String[] args) throws java.lang.Exception
{
dynamicFunction();
dynamicFunction(1,2,3, "34");
dynamicFunction("hello", true, "world");
}
<小时/>

但是等等!

不要使用这种方法。 最好给方法起不同的名称或使用重载,

  • 更清晰
  • 这是java中的标准
  • 享受编译和立即检测错误的优势

关于java - 是否有已知的方法可以在 OOP 中使 API 参数签名动态化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34961412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com