将属性从一个 class 传递到另一个 + 在 java 中实例化
Passing attributes from one class to another + instaiation in java
我想用一个对象的方法绕过 class(在本例中是 Category
class)并让它通过 attributes/fields 变成另一个 class 的对象(在本例中 subCategory
class)。您可以在下面的 main
方法中看到我从编译器获得的实际结果与我试图获得的结果。
我认为对我来说最大的挑战是尝试以下方法:
- 将 class 作为方法中的参数传递(我找不到讨论它的在线参考资料。)
- 在局部 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.
对它没有任何作用
您可以通过两种方式前往此处:
使 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
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)
我想用一个对象的方法绕过 class(在本例中是 Category
class)并让它通过 attributes/fields 变成另一个 class 的对象(在本例中 subCategory
class)。您可以在下面的 main
方法中看到我从编译器获得的实际结果与我试图获得的结果。
我认为对我来说最大的挑战是尝试以下方法:
- 将 class 作为方法中的参数传递(我找不到讨论它的在线参考资料。)
- 在局部 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.
您可以通过两种方式前往此处:
使
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
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)