如何根据我使用的自定义类将输出从对象类名+哈希码更改为字符串输出



我是Java的新手,我正在练习创建类,对象和从类中获取变量。我创建了一个类Factory,其中包括2个字符串变量和一个来自不同类的对象数组,称为Item,其中包括2个字符串变量。在我的主程序中,我想从工厂类中提取变量。我设法打印姓名和地址,但getItem()显然不会从Item类打印getName()字符串。我尝试在工厂类中重写toString,但我猜它不适用于这种类型的自定义类。在这种情况下我能做什么?

类工厂:

public class Factory {
public static final int MAX_ODABRANIARTIKLI = 3;
String name;
String address;
Item[] items = new Item[MAX_ODABRANIARTIKLI];

public Factory(String name, String address, Item[] items) {
this.name = name;
this.address = address;
this.items = items;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public Item[] getItems() {
return items;
}
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
public void setItems(Item[] items) {
this.items = items;
}
}

类项目:

public class Item {
String name;
String category;
}
public Item(String name, String category) {
this.name = name;
this.category = category;
}
public String getName() {
return name;
}
public String getCategory() {
return category;
}
public void setName(String name) {
this.name = name;
}
public void setCategory(String category) {
this.category = category;
}
}
主要代码:

import hr.java.production.model.Factory;
public class Main {
public static final int MAX_TVORNICA = 2;
public static void main(String[] args) {
Factory[] tvornice = new Factory[MAX_TVORNICA];
System.out.println("Unijeli ste sljedeće tvornice:");
for(Factory factory : tvornice){
ispisTvornica(factory);
}
}
public static void ispisTvornica(Factory factory){
System.out.println("Naziv: " + factory.getName());
System.out.println("Web adresa: " + factory.getAddress());
System.out.println("Odabrani artikli: " + factory.getItems());
}

在Item类中重写toString()方法,返回名称,然后您可以使用Arrays.toString(factory.getItems())

Try This

Factory.Java

public class Factory {
public static final int MAX_ODABRANIARTIKLI = 3;
String name;
String address;
Item[] items = new Item[MAX_ODABRANIARTIKLI];
public Factory(String name, String address, Item[] items) {
this.name = name;
this.address = address;
this.items = items;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public Item[] getItems() {
return items;
}
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
public void setItems(Item[] items) {
this.items = items;
}
}

Item.java

public class Item {
String name;
String category;
public Item(String name, String category) {
this.name = name;
this.category = category;
}
public String getName() {
return name;
}
public String getCategory() {
return category;
}
public void setName(String name) {
this.name = name;
}
public void setCategory(String category) {
this.category = category;
}
@Override
public String toString() {
return "Item [name=" + name + "]";
}


}

Main.java

public class Main {
public static final int MAX_TVORNICA = 2;
public static void main(String[] args) {
int i = 0;

Factory[] tvornice = new Factory[MAX_TVORNICA];
System.out.println("Unijeli ste sljedeće tvornice:");
Item[] items = { new Item("Joy", "category_Joy"), new Item("Roy", "category_Roy") };
tvornice[0] = new Factory("Jems", "ABC", items);
tvornice[1] = new Factory("ivuksan", "XYZ", items);
for (Factory factory : tvornice) {
ispisTvornica(factory, i++);
}

System.out.println("------------------------------------------------------------------------");

for (Factory factory : tvornice) {
ispisTvornicaAnother(factory);
}
}
public static void ispisTvornica(Factory factory, int i) {
System.out.println("Naziv: " + factory.getName());
System.out.println("Web adresa: " + factory.getAddress());
System.out.println("Odabrani artikli: " +factory.getItems()[i]);
}

public static void ispisTvornicaAnother(Factory factory) {
System.out.println("Naziv: " + factory.getName());
System.out.println("Web adresa: " + factory.getAddress());
for(Item item : factory.getItems())
System.out.println("Odabrani artikli: " + item);
}
}
我定义了两个函数:
  1. ispisTvornica()函数打印每次迭代中出现在item类
  2. 中的item名称
  3. ispisTvornicaAnother()函数打印每一次迭代,它打印所有项目的名称。

输出:-

Unijeli ste sljedeće tvornice:
Naziv: Jems
Web adresa: ABC
Odabrani artikli: Item [name=Joy]
Naziv: ivuksan
Web adresa: XYZ
Odabrani artikli: Item [name=Roy]
------------------------------------------------------------------------
Naziv: Jems
Web adresa: ABC
Odabrani artikli: Item [name=Joy]
Odabrani artikli: Item [name=Roy]
Naziv: ivuksan
Web adresa: XYZ
Odabrani artikli: Item [name=Joy]
Odabrani artikli: Item [name=Roy]

最新更新