为什么 ArrayList<String> get() returns 对象不是 Java 中的字符串
Why ArrayList<String> get() returns Object not String in Java
在制作参数解析器时,我使用了ArrayList<String>
。
Refering to this official Documentation、ArrayList<E>.get()
应该返回 E
类型的对象,因此 ArrayList<String>.get()
应该返回 String
对象。
但是,在这种情况下,我得到的是 Object 而不是 String 元素。
import lombok.Data;
import java.util.ArrayList;
@Data
public class Argument<T> {
public ArrayList<String> Args;
public String Description;
public Boolean Required;
public Boolean HasValue;
public T Value;
}
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
public class ArgumentParser {
private ArrayList<Argument> argumentList_;
public String ArgList() {
StringBuilder builder = new StringBuilder();
for (Argument argument : argumentList_) {
//Here is the problem
for (String arg : argument.Args) {
builder.append(arg);
builder.append(", ");
}
}
//Delete Traling Comma
builder.delete(builder.length());
builder.delete(builder.length());
return builder.toString();
}
}
是这种情况吗
- IDE 环境(IntelliJ + Lombok)中的错误
- 我的代码让 Java 这样做(通用类型)
帮帮我...
在第一段代码中Argument
定义了一个类型参数。
public class Argument<T> {
public ArrayList<String> Args;
在第二段代码中使用了 Argument
但缺少类型参数。
private ArrayList<Argument> argumentList_;
// ...
for (Argument argument : argumentList_) {
ArrayList<Argument>
是一种 罕见的 类型(不太常见(?),被称为 部分原始类型 - 一种具有原始类型参数)。其行为很奇怪。
最简单的解决方法是使用通配符。
private ArrayList<Argument<?>> argumentList_;
// ...
for (Argument<?> argument : argumentList_) {
在制作参数解析器时,我使用了ArrayList<String>
。
Refering to this official Documentation、ArrayList<E>.get()
应该返回 E
类型的对象,因此 ArrayList<String>.get()
应该返回 String
对象。
但是,在这种情况下,我得到的是 Object 而不是 String 元素。
import lombok.Data;
import java.util.ArrayList;
@Data
public class Argument<T> {
public ArrayList<String> Args;
public String Description;
public Boolean Required;
public Boolean HasValue;
public T Value;
}
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
public class ArgumentParser {
private ArrayList<Argument> argumentList_;
public String ArgList() {
StringBuilder builder = new StringBuilder();
for (Argument argument : argumentList_) {
//Here is the problem
for (String arg : argument.Args) {
builder.append(arg);
builder.append(", ");
}
}
//Delete Traling Comma
builder.delete(builder.length());
builder.delete(builder.length());
return builder.toString();
}
}
是这种情况吗
- IDE 环境(IntelliJ + Lombok)中的错误
- 我的代码让 Java 这样做(通用类型)
帮帮我...
在第一段代码中Argument
定义了一个类型参数。
public class Argument<T> {
public ArrayList<String> Args;
在第二段代码中使用了 Argument
但缺少类型参数。
private ArrayList<Argument> argumentList_;
// ...
for (Argument argument : argumentList_) {
ArrayList<Argument>
是一种 罕见的 类型(不太常见(?),被称为 部分原始类型 - 一种具有原始类型参数)。其行为很奇怪。
最简单的解决方法是使用通配符。
private ArrayList<Argument<?>> argumentList_;
// ...
for (Argument<?> argument : argumentList_) {