我来自C#背景,我试图弄清楚如何在C#中使用它们的方式来使用类。如果这是不在Java中使用它们的方式,我想知道正确的方法。
基本上,这就是我想要做的事情:
这是我到目前为止的尝试:
这是我想要的类对象:
public class ClassName
{
public ClassName(String _str, int _a, int _b, int _c, int _d, long _e)
{
str = _str;
a = _a;
b = _b;
c = _c;
d = _d;
e = _e;
}
public String str;
public int a;
public int b;
public int c;
public int d;
public long e;
}
这是它在主类文件中引用的方式:
// Why would I use this instead of List<T>?
ArrayList<ClassName> hList = new ArrayList<ClassName>();
这就是我尝试填充类对象的方式:
hList.add(new ClassName("string", 1, 2, 3, 4, 2432342322));
这是我在Eclipse中遇到的错误:
The constructor ClassName(String, int, int, int, int, long) is undefined
......这令人费解。 Eclipse要求我添加已经添加的内容。当我选择&#34;快速修复&#34;选项,它与上面的构造函数做同样的事情,但没有type = type
的东西。也许我没有正确处理这个问题?
假设这是正确的迭代方式,这就是我认为可行的方法:
for (int i = 0; i < hList.size(); i++)
{
System.out.println(hList[i].currentDate);
}
那么,我如何创建一个正确的列表并在Java中迭代它?
答案 0 :(得分:6)
public ClassName(string _str, int _a, int _b, int _c, long _d)
{
str = _str;
a = _a;
b = _b;
c = _c;
d = _d;
}
使用下划线命名并不常见。我建议改用this
。此外,String
是大写的,花括号通常位于行的末尾。
public ClassName(String str, int a, int b, int c, long d) {
this.str = str;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}
// Why would I use this instead of List<T>?
ArrayList<ClassName> hList = new ArrayList<ClassName>();
更为通用的类型如List
,Collection
或Iterable
在左侧更好,与C#相同。我建议不要使用匈牙利语表示法:list
比hList
更受欢迎。此外,您可以省略右侧类型名称,并使用diamond operator(<>
)来推断类型。
List<ClassName> list = new ArrayList<>();
构造函数
ClassName(String, int, int, int, int, long)
未定义。
您的构造函数有三个int
和一个long
;您尝试传递四个int
和一个long
。
假设这是正确的迭代方式,这就是我认为可行的方法:
for (int i = 0; i < hList.size(); i++) { System.out.println(hList[i].currentDate); }
如果您不需要索引变量i
,则每个循环的A更好。
for (ClassName item: list) {
System.out.println(item.currentDate);
}
如果您确实需要i
,请将[i]
更改为.get(i)
。 Java没有运算符重载,因此[]
仅在数组上可用,而不是像List
这样的类或接口。
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).currentDate);
}
答案 1 :(得分:2)
您在类的构造函数中添加了一个额外的int,它需要1个String,3个int和1个long,并且您尝试使用1个String,4个int和1个Long创建它。 迭代列表的方式是
for (ClassName element:hList){
//something meaningful here
System.out.println(element.currentDate);
}
您也可以使用Java 8功能:)
hList.forEach(className -> {
System.out.println(className.currentDate);
});