我想要类Path的调用方法路径。我需要设置一些数字 - 数组长度和入口处的数组的适当值。 这是我的班级:
class Path {
int number;
String[] path_name = new String [number];
Path (int n, String [] p){
number=n;
path_name=p;
}
public void path(){
for (int i=1; i<number; i++){
driver.findElement(By.linkText(path_name[i])).click();
}
}
}
这是我尝试调用方法的方法:
Path pa = new Path (6,'array value');
pa.path();
但我不知道如何正确启动'数组值' - 例如我需要设置“one”,“two”,“three”。有人可以帮忙吗?
我不知道数组开头的长度,所以我无法在构造函数中定义几个字符串
答案 0 :(得分:2)
你班上有很多问题。
直接在类变量中编写的变量的初始化是在之前>>执行构造函数体。因此,path_name
数组的初始化将始终使用默认值number
完成,即0
。这样可行但您的数组无法以这种方式存储任何值。
现在,在您的身体中,我猜您尝试使用path_name
数组的内容填充p
数组。但是你替换了实例。这很好用但是如果有人在类外更改数组,它也会在这个类中更改。我想您想使用System.arraycopy
或Arrays.copyOf
传输值。
对于构造函数的调用,你必须调用这样的东西:
new Path(6, new String[] {"one", "two", ...});
作为改进,我建议你完全放弃number
变量,因为你可以随时使用path_name.length
来引用数组本身的大小。
您可能想要研究的另一件事是变长参数。如果你改变你的构造函数:
Path(int n, String p...){
number=n;
path_name = p
}
您设置在构造函数调用中的数字后面添加了一个未定义的字符串数量。所有这些字符串都自动打包在一个名为p
的String数组中。由于此数组仅存在于此构造函数中,因此您可以安全地复制实例而不是变量。然后构造函数的调用如下所示:
new Path(6, "one", "two", ...);
答案 1 :(得分:1)
尝试类似:
Path pa = new Path(6, String[] {"one", "two", "three"} );
如果您可以更改代码,则可以使用varargs使其更容易:
Path (int n, String p...)
然后你可以:
Path pa = new Path(6, "one", "two", "three");
答案 2 :(得分:0)
如果我理解你的要求,我认为这就是你想要的 -
class Path {
int number;
String[] path_name;
Path (int length){
path_name = new String[length];
for(int i=1;i<=length;i++)
path_name[i-1] = Integer.ToString(i);
}
}
这假设您希望数组为1 ... n。如果你想要任何你想要的字符串元素,我认为这可能是一个更好的解决方案,我会做
class Path {
int number;
String[] path_name;
Path (String p){
path_name = p;
}
public void some_method(){
String[] a = {"one", "two", "three"};
Path p = new Path(a);
}
}
答案 3 :(得分:0)
您可以在Path实例化之前初始化String数组,如下所示:
String[] p = {"one", "two", "three"};
Path pa = new Path(6, p);
答案 4 :(得分:0)
如果您接受数组的所有元素都是路径的有效元素的不变量,则可以消除您引用的n数。
考虑到这一点,你可以简单地拥有
class Path {
final String[] pathNames;
// uses var args
Path(String... paths) {
pathNames = paths;
}
void path() {
// uses enhanced for loop
for(String path : pathNames) {
driver.findElement(By.linkText(path)).click();
}
}
}
一些批评:
number
的数组。但那时数字为0。所以你要创建一个空数组。