【发布时间】:2019-03-28 22:57:11
【问题描述】:
我正在编写一个简单的实用程序泛型类,它提供了一个接受 T[] 参数的构造函数。我想设置第二个构造函数,它接受一个字符串参数,但使用第一个构造函数作为设置的一部分。
public class PermGenerator<T> {
private final T[] values;
public PermGenerator(T[] vals) {
values = Arrays.copyOf(vals, vals.length);
}
public PermGenerator(String str) {
this(str.chars().mapToObj(c -> (char)c).toArray(Character[]::new));
}
我希望第二个构造函数将字符串映射到字符数组,然后调用第一个构造函数。
相反,Java 编译器抱怨找不到合适的构造函数。
是否可以对其进行重组以实现我的想法? 谢谢。
这是一种可以接受的方法。提供静态辅助方法将字符串转换为字符数组。不像 C++ 那样流畅,但它会起作用:
public static final Character[] asArray(String str) {
return str.chars().mapToObj(c -> (char)c).toArray(Character[]::new);
}
因此,它需要用户使用以下语法来构造类:
PermGenerator gen = new PermGenerator(PermGenerator.asArray("ACBC"));
【问题讨论】:
标签: generics types constructor inference