将属性从一个 class 传递到另一个 + 在 java 中实例化

Passing attributes from one class to another + instaiation in java

我想用一个对象的方法绕过 class(在本例中是 Category class)并让它通过 attributes/fields 变成另一个 class 的对象(在本例中 subCategory class)。您可以在下面的 main 方法中看到我从编译器获得的实际结果与我试图获得的结果。

我认为对我来说最大的挑战是尝试以下方法:

  1. 将 class 作为方法中的参数传递(我找不到讨论它的在线参考资料。)
  2. 在局部 class 的方法内实例化外部 class 的对象。

感谢您的帮助。

类别class

public class Category {

private String name;
private SubCategory subCategory = new SubCategory();

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public void createSubcategory(SubCategory subCategory, String name){
    SubCategory m = new SubCategory();
    m.setParent(Category.this);
    m.setName(name);

}

子类别class

public class SubCategory {


private String name;
private Category parent;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Category getParent() {
    return parent;
}

public void setParent(Category parent) {
    this.parent = parent;
}    }

主要(方法)

public static void main(String[] args) {


        Category mainCat = new Category();
        SubCategory m = new SubCategory(); // I want to instantiate this inside the method of class Category called createSubCategory()

        mainCat.setName("TITLE");
        System.out.println(mainCat.getName()); // Returns --> "TITLE" THIS IS OK!


        mainCat.createSubcategory(m, "SUBTITLE1");
        System.out.println(m.getName()); // Returns "null", I'm trying to make it return --> "SUBTITLE1"
        System.out.println(m.getParent());// Returns "null", I'm trying to make it return --> "mainCat (object)"

    }

现在您的 createSubCategory 方法接收一个 SubCategory 作为参数,但它什么也不做(在内部创建一个新实例)。另一方面,它创建了一个 SubCategory 的实例,但作为方法 returns void.

对它没有任何作用

您可以通过两种方式前往此处:

  1. 使 createSubCategory 方法使用提供的子类别,并对其进行处理(在这种情况下,我将其称为 setSubCategory,因为它不会创建它) :

    public void setSubcategory(SubCategory subCategory, String name){
        subCategory.setParent(Category.this);
        subCategory.setName(name);
    }
    

主要是:

    mainCat.setSubcategory(m, "SUBTITLE1");
    System.out.println(m.getName()); //you will get 'SUBTITLE1' here
    System.out.println(m.getParent()); //you will get the parent category
  1. make createSubCategory 创建它,在这种情况下你不需要将它传递给它,而是 return it:

    public SubCategory createSubcategory(String name){
        SubCategory m = new SubCategory();
        m.setParent(Category.this);
        m.setName(name);
        return m;
    }
    

主要是:

public static void main(String[] args) {
    Category mainCat = new Category();
    mainCat.setName("TITLE");
    System.out.println(mainCat.getName()); 

    Subcategory m = mainCat.createSubcategory("SUBTITLE1");
    System.out.println(m.getName());
    System.out.println(m.getParent());
}

我什至会更进一步并修改@Nir Levy 给出的示例 2:

public SubCategory createSubcategory(String name){
    return new SubCategory(this, name);
}

如果需要这两个属性,则应通过构造函数注入它们 (Constructor or Setter)