[英]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.