簡體   English   中英

如何在另一個類中使用一個方法,如何在另一個方法中使用?

[英]How do I use a method in another class, do be used in another method?

我正在嘗試使用另一個類中的方法,以用於另一個類的方法(另一個類不是驅動程序)。 這有點復雜,但是我將嘗試簡化我的情況:

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()方法。 很抱歉,這有點令人困惑,但是有人知道是否有更好的方法嗎?

問題出在

public class Class2<Class1> {

在這里,您聲明了一個名為Class1類型參數 該參數的名稱遮蓋了實際的類名,這意味着當您在Class2的定義內鍵入Class1時,並不表示“我剛剛在另一個文件中定義的類”,而是“由Class2用戶選擇的任何類型”放在<> “之間。 並且不能保證該類型甚至將具有get()方法。

似乎根本沒有任何理由讓您希望Class2首先具有類型參數,因此快速解決方案是將其更改為

public class Class2 {

並保持其他一切不變。

據我了解,您創建了一個類,然后創建了該類的某些元素(泛型),將它們添加到數組列表中,然后您在訪問方法時遇到了麻煩。 如果我錯了糾正我。

好吧,如果是這樣,請遵循以下代碼。

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
   }
}

您在get方法上缺少訪問修飾符。 默認情況下,這使它成為程序包專用的(可訪問同一程序包中的所有類)。 就您而言,您需要將其公開:

public String getComponent() {
    return component;
}

另外,這不是用Java定義構造函數的方式。 您正在定義一個返回類型為void的方法,該方法恰好與該類具有相同的名稱。 您可以在這里查看文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM