gpt4 book ai didi

java - 使用泛型添加数字和字符串的函数

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

在一次采访中,我被要求使用泛型编写一个函数,将传递给它的数字和字符串相加。数字可以是 Integer、Double 等。

如果将 2 个字符串传递给函数,它应该附加这些字符串。最后,应该返回添加的结果。

我使用了 Lambda,如下所述。

public class WorkAround {
public static void main(String[] args) {
MyAdd myAdd = new MyAdd();
System.out.println("Adding Integers: " + myAdd.add(1, 2, (a,b) -> a+ b));
System.out.println("Adding Double: " + myAdd.add(1.2, 1.2, (a,b) -> a+ b));
System.out.println("Adding String: " + myAdd.add("James ", "Bond", (a,b) -> a + b));
}
}

class MyAdd {
public <T> T add(T a, T b, BinaryOperator<T> operation) {
return operation.apply(a, b);
}
}

输出:

Adding Integers: 3
Adding Double: 2.4
Adding String: James Bond

但是后来,我被要求仅使用泛型来实现相同的结果。就像下面的代码片段一样。

public class Trial {
public static void main(String[] args) {
MyAdd myAdd = new MyAdd();
System.out.println("Adding Integers: " + myAdd.add(1, 2));
System.out.println("Adding Double: " + myAdd.add(1.2, 1.2));
System.out.println("Adding String: " + myAdd.add("James ", "Bond"));
}
}

class MyAdd {
public <T> T add(T a, T b) {
return a + b;
}
}

显然,由于以下原因,这不起作用。

The operator + is undefined for the argument type(s) T, T

我找到了this回答我的问题。但这个问题没有处理字符串。还有其他我可能会失踪的方式吗?

最佳答案

我们有 2 种情况,字符串或数字。应该进行这种区分。下面解决了这个问题。

import java.math.BigDecimal;

public class Trial {
public static void main(String[] args) {
MyAdd myAdd = new MyAdd();
System.out.println("Adding Integers: " + myAdd.add(1, 2));
System.out.println("Adding Double: " + myAdd.add(1.2, 1.2));
System.out.println("Adding String: " + myAdd.add("James ", "Bond"));
}
}

class MyAdd {
public String add(String a, String b) {
return a + b;
}

public <T extends Number> T add(T a, T b){
return (T) new BigDecimal(a.toString()).add(new BigDecimal(b.toString()));
}
}

关于java - 使用泛型添加数字和字符串的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57102184/

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