作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个需要 2 个参数的方法
public Class Test{
public void Foo(int x, SOMETHING HERE(Optional and unknown at runtime)){
}
}
在我的主要
public Class Main{
public static void main(String[]args){
Test test = new Test();
String s1 = "Hello";
float f1 = 5.5f;
test.Foo(10);
test.Foo(10, s1);
test.Foo(10, f1);
test.Foo(10, s1, f1);
test.Foo(10, f1, s1);
}
}
如何在不创建多个方法的情况下实现我想要的目标?
最佳答案
当第一个 int
参数之后的参数数量未定义并且它们可能具有不同的类型时,您可以使用 varargs方法签名
public Class Test{
public void Foo(int x, Object... args) {
}
}
这种方法的唯一问题是您需要在 Foo
方法中仔细处理参数
例如。要迭代参数,您可以使用循环并检查类型实例:
for (Object item : args) {
if (item instanceof String) {
// do stuff
}
}
另一种方法是获取参数长度并一一获取它们的特定值:
final int maxArgs = args.length;
if (maxArgs > 0) {
final Object arg0 = args[0];
if (arg0 instanceof String) {
final String strArg0 = (String) arg0;
//do stuff
}
}
基本上这取决于你的需求
关于java - 在运行时传递可选的未知参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46697054/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!