如何在另一个类中使用一个方法,如何在另一个方法中使用?

时间:2019-08-06 21:30:38

标签: java class methods

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

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());
}}

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

3 个答案:

答案 0 :(得分:1)

问题出在

public class Class2<Class1> {

在这里声明一个名为Class1 type参数。该参数的名称遮盖了实际的类名,这意味着当您在Class1的定义中键入Class2时,它的意思不是“我刚刚在另一个文件中定义的类”,而是“ Class2的用户选择在<>之间插入的任何类型”。并且不能保证该类型甚至具有get()方法。

您似乎根本没有理由要Class2拥有类型参数,因此快速修复是将其更改为< / p>

public class Class2 {

并保留其他所有内容。

答案 1 :(得分:0)

据我了解,您创建了一个类,然后创建了该类的某些元素(泛型),将它们添加到数组列表中,然后您在访问方法时遇到了麻烦。 如果我错了请纠正我。

如果是这种情况,请遵循以下代码。

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 :(得分:0)

您在get方法上缺少访问修饰符。默认情况下,这使它成为程序包专用的(可访问同一程序包中的所有类)。就您而言,您需要将其公开:

public String getComponent() {
    return component;
}

此外,这也不是您在Java中定义构造函数的方式。您正在定义一个返回类型为void的方法,该方法恰好与该类具有相同的名称。 You can see the docs here