从其他类导入 id(Attribute)

Import id(Attribute) from other class

提问人:Matias04_ 提问时间:10/31/2023 更新时间:10/31/2023 访问量:50

问:

所以我有一个名为 Major 的类,它包含相应的 majorId,我有 Student 类,它参加某个 Major,我想知道是否有可能在为学生声明变量时以某种方式导入 majorId,而无需使用 Setter 或 Getter 函数,也许是一种更快更简单的方法?

import java.util.ArrayList;

public class Student extends Person {
    private static String cod;
    public String Major.majorId; //?????????? This is what I was trying to do
    private ArrayList<Subject> subjectList;
}

public class Major {
    private String majorId;
    private ArrayList<Student> studentList;
}
Java 对象

评论

0赞 Rifat Rubayatul Islam 10/31/2023
想想看,你怎么知道在申报时使用哪个?MajormajorId

答:

0赞 S.D 10/31/2023 #1

调用方式是在静态上下文中。为了做到这一点,你必须在类中声明变量为 .Major.majorIdmajorIdMajorstatic

但请记住,静态变量是类的一部分,这意味着该类的所有实例将共享相同的变量。

0赞 paydro 10/31/2023 #2

你要做的事情不是直接可能的,但它也不是最好的模式。如果您的意图是只允许访问字符串,则有几个干净的选项:majorId

  1. 构造函数中的解构

通过在构造函数中传递 Major 对象,可以获取其 id 以供本地使用:

public class Student {
  public final String majorId;
  
  public Student(Major m) {
    this.majorId = m.majorId;
  }
}

或者,单独传递 ID:

  ...
  public Student(String majorId) { 
    this.majorId = majorId 
  }
  1. 访问级别定义

从理论上讲,避免在类中保留对象引用没有多大好处。您可以将 major 设为私有,并且只允许访问 majorId 值。真的,这是一个吸气剂,但它是很好的模式。MajorStudent

public class Student {
  private final Major major;

  public Student(Major m) {
    this.major = m;
  }

  public String majorId() {
    return major.majorId;
  }
}