在我的函数中,为了接受一个值数组,我必须定义一个数据类型......
myFunc( String[] myVar ) {}
如果我想要一个像下面数组一样混合对象和字符串以及嵌套数组/的数组怎么办(注意:下面的数组在PHP中)
myFunc(array(
array(
'name' => 'Category1',
'products' => array(
array(
productObject,
productObject,
...
)
)
)
));
这在Java中是否可行,或者这是一种完全错误的技术?
答案 0 :(得分:1)
这是可能的(Object
数组),但它仍然不是一个好的解决方案。
这听起来像是一个包含不同类型的数组,你真的想要创建一个新类。您在示例中为数组元素定义了名称,这表示您知道它们应该是什么类型。我的猜测是你要创建一个类,它包含名称的String和一个Products数组(另一个自定义类)。
答案 1 :(得分:1)
您需要在Java中使用面向对象的方法(也可以在PHP中使用)。您在上面列出的对象的类结构如下:
public class MyObject {
String name;
Product[] products;
public MyObject(String name, Product[] products) {
this.name = name;
this.products = products;
}
}
然后,您可以通过执行以下操作获取该类的实例:
new MyObject("Category1", new Product[] { productObject1, productObject2 });
您还可以拥有此对象类型的数组:
MyObject[] myObjs = {
new MyObject("Category1", new Product[] { productObject1, productObject2 });
new MyObject("Category2", new Product[] { productObject3, productObject4 });
new MyObject("Category3", new Product[] { productObject5, productObject6 });
}
答案 2 :(得分:1)
大多数PHP代码不像C ++,C#,Java等更“传统”的OO语言中的代码那样强类型。因此,将PHP直接移植到Java的方法可能是错误的。
相反,尝试构建一个类来表示您的数据类型。从最里面的类型开始,在您的情况下似乎是“产品”。例如:
public class Product {
private int id;
private String name;
public Product(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
}
现在您需要表示看似属于某类产品的内容,因此您可以创建另一个类来保存这些产品。例如:
public class ProductCategory {
private String name;
private List<Product> products;
public ProductCategory(String name) {
this.name = name;
this.products = new ArrayList<Product>();
}
public String getName() {
return this.name;
}
public List<Product> getProducts() {
return this.products;
}
}
要使用这些类,您可以编写如下代码:
Product p1 = new Product(1, "P1");
Product p2 = new Product(2, "P2");
Product p3 = new Product(3, "P3");
ProductCategory c1 = new ProductCategory("C1");
// Add product to category 1
c1.getProducts().add(p1);
ProductCategory c2 = new ProductCategory("C2");
// Add products to category 2
c2.getProducts().add(p2);
c2.getProducts().add(p3);
答案 3 :(得分:0)
您可以创建一个Object
数组,这将很乐意采用多种数据类型。你必须要小心你如何使用它们 - 使用instanceof
很方便,或者如果你确切知道你可以投射什么数据类型,而不需要先检查数据类型。使用多个数据类型数组被认为是不好的做法,尽管如果您的实现需要它,没有什么能阻止您这样做。