java,如何从一个函数输入中读取多个数据类型?

qmb5sa22  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(319)

假设我想在代码中调用一个函数,在一种情况下输入一个整数,在另一种情况下输入一个string/boolean/char。。。我知道 var 用于执行此操作,但在我的代码中不起作用。
我需要为it工作更改/添加什么,并且能够接收不同的数据类型?

public static void add(var num){//-here is var but I get an error
           //do something
        }
axzmvihb

axzmvihb1#

我知道var是用来做这件事的,但它在我的代码中不起作用。
不,不是。
java是强而简单的类型。事情有一种类型。没有动态/动态类型。 var 不是那样的。var只是语法。
在键入/动态语言中,您可以编写:

var x;
x = 5;
x = "Hello";

在java中,您不能这样做。 var x; 是编译器错误。 var x 在java中,这只是一个简写:在这一行中,获取要分配给x的对象的类型。假设我是这个意思,把那个字写出来。换句话说, var 仅当您内联初始化时才允许:

var x = "Hello"; // legal; and 100% the same as writing String x = "Hello"
x = 5; // compiler error. x is of type String, and 5 isn't a string.

我需要为it工作更改/添加什么,并且能够接收不同的数据类型?
string、boolean、char和int的常见类型是什么? Object 是最好的答案,但不是很好。所以你必须这么做:

public static void add(Object num) {
    if (num instanceof Number) { .... }
    else if (num instanceof String) { .... }
    else if (num instanceof Boolean) { .... }
    else throw new IllegalArgumentException("Only numbers, strings, and booleans allowed");
}

但这是非常非java的。听起来你想设计一个弱类型的系统 "5" 以及 5 同样对待,以及 true 以及 1 都是一样的。我建议你不要那样做。
另一种选择是只做那么多的方法。在java中,方法是由它的整个签名来定义的:名称,参数类型和返回类型,以及方法所在的类型。因此,您可以创建多个add方法:

public static void add(String num) { ... }
public static void add(int num) { ... }

相关问题