Java 我如何在另一个类中使用一个方法,是否在另一个方法中使用?

Java 我如何在另一个类中使用一个方法,是否在另一个方法中使用?,java,class,methods,Java,Class,Methods,我试图使用另一个类中的方法,在另一个类的方法中使用(另一个类不是驱动程序)。这有点复杂,但我将尝试重新创建简化的情况: public class Class1 { private String component; void Class1(String component) { this.component = component } String get() { return component; }} 这是第二节课 public class Class2<

我试图使用另一个类中的方法,在另一个类的方法中使用(另一个类不是驱动程序)。这有点复杂,但我将尝试重新创建简化的情况:

public class Class1 { 
private String component;
void Class1(String component) {
       this.component = component
}
String get() {
       return component;
}}
这是第二节课

public class Class2<Class1> {
ArrayList<Class1> arraylistofClass = new ArrayList<Class1>();
void addandPrint(Class1 class1) {
arraylistofClass.add(class1);
System.out.println(class1.get());
}}
公共类2{
ArrayList arraylistofClass=新的ArrayList();
作废添加和打印(1类){
arraylistofClass.add(class1);
System.out.println(class1.get());
}}

所以本质上我试图添加第一个类的数组列表,填充它,然后打印出第二个类的数组列表填充了什么。但是,当我尝试在驱动程序中运行addandPrint方法时,我无法在代码中访问class1的.get()方法。如果这有点让人困惑,我很抱歉,但是有人知道有没有更好的方法吗?

据我所知,您创建了一个类,然后创建了该类的一些元素(泛型),将它们添加到arraylist中,然后访问这些方法时遇到了问题。 如果我错了,请纠正我

好吧,如果是这样的话,那么遵循下面的代码

class Student{
   private String name;
   private int id;

   Student(String name, id){
      this.name = name;
      this.id = id;
   }

   public String getName(){ return name;}
   public int getId(){ return id;}

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

   public String someMethod(){
      return "Mr. " + name + "(" + id + ")";
   }
} // end class
二等舱

class Class2{
   public static void main(String[] args){
      List<Student> students = new ArrayList<>();
      //Adding elements to the List
      students.add(new Student("abc", 1));
      students.add(new Student("def", 2));
      students.add(new Student("geh", 3));
      students.add(new Student("ijk", 4));

      for(Student student : students)
         System.out.println(student.someMethod()); //You can access any public and protected method like this
   }
}
类2{
公共静态void main(字符串[]args){
List students=new ArrayList();
//向列表中添加元素
添加(新学生(“abc”,1));
添加(新学员(“def”,2));
添加(新学生(“geh”,3));
添加(新学生(“ijk”,4));
用于(学生:学生)
System.out.println(student.someMethod());//您可以像这样访问任何公共和受保护的方法
}
}

您的
get
方法缺少访问修饰符。默认情况下,这使其包私有(可供同一包中的所有类访问)。在您的情况下,您需要将其公开:

公共字符串getComponent(){
返回组件;
}
而且,这不是在Java中定义构造函数的方式。您正在定义一个返回类型为
void
的方法,该返回类型恰好与类同名

问题出在

public class Class2<Class1> {

其他一切都保持不变。

我认为你不需要为
Class2
使用泛型。将代码压缩到尽可能小的空间并不能使它运行得更快。你对我要做的事情有正确的想法,但是我有没有办法在main方法中创建第一个类的实例,而不是在第二个类中创建实例,在仍然能够访问第二个类中的方法时?请看,第一个类称为模型类,在第一个类中创建实例没有意义,因为它就像用于存储学生信息的sutdent类型的蓝图。实际工作在第二个类中完成,该类添加信息并创建对象列表。您必须创建一个实例,以便访问/修改/存储Student类(第一类)的对象。如果您仍然有疑问,请在您的问题中发布更多代码,我将更新我的答案。我已尝试在原始代码中公开get方法,但没有效果。
public class Class2 {