假设我想在代码中调用一个函数,在一种情况下输入一个整数,在另一种情况下输入一个string/boolean/char。。。我知道 var 用于执行此操作,但在我的代码中不起作用。我需要为it工作更改/添加什么,并且能够接收不同的数据类型?
var
public static void add(var num){//-here is var but I get an error //do something }
axzmvihb1#
我知道var是用来做这件事的,但它在我的代码中不起作用。不,不是。java是强而简单的类型。事情有一种类型。没有动态/动态类型。 var 不是那样的。var只是语法。在键入/动态语言中,您可以编写:
var x; x = 5; x = "Hello";
在java中,您不能这样做。 var x; 是编译器错误。 var x 在java中,这只是一个简写:在这一行中,获取要分配给x的对象的类型。假设我是这个意思,把那个字写出来。换句话说, var 仅当您内联初始化时才允许:
var x;
var x
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 是最好的答案,但不是很好。所以你必须这么做:
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方法:
"5"
5
true
1
public static void add(String num) { ... } public static void add(int num) { ... }
1条答案
按热度按时间axzmvihb1#
我知道var是用来做这件事的,但它在我的代码中不起作用。
不,不是。
java是强而简单的类型。事情有一种类型。没有动态/动态类型。
var
不是那样的。var只是语法。在键入/动态语言中,您可以编写:
在java中,您不能这样做。
var x;
是编译器错误。var x
在java中,这只是一个简写:在这一行中,获取要分配给x的对象的类型。假设我是这个意思,把那个字写出来。换句话说,var
仅当您内联初始化时才允许:我需要为it工作更改/添加什么,并且能够接收不同的数据类型?
string、boolean、char和int的常见类型是什么?
Object
是最好的答案,但不是很好。所以你必须这么做:但这是非常非java的。听起来你想设计一个弱类型的系统
"5"
以及5
同样对待,以及true
以及1
都是一样的。我建议你不要那样做。另一种选择是只做那么多的方法。在java中,方法是由它的整个签名来定义的:名称,参数类型和返回类型,以及方法所在的类型。因此,您可以创建多个add方法: