![](/img/trans.png)
[英]how to create java generic method which returns String or ArrayList<String>
[英]Java Returning method which returns arraylist?
我有一個類有這樣的方法:
public ArrayList<Integer> myNumbers() {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(11);
numbers.add(3);
return(numbers);
}
我如何在另一個類中調用此方法?
1.如果要調用該方法的類在同一個包中,則創建該類的實例並調用該方法。
2.使用Composition
3.最好有一個像ArrayList<Integer>
之類的Generic ArrayList
...
例如:
public class Test{
public ArrayList<Integer> myNumbers() {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(11);
numbers.add(3);
return(numbers);
}
}
public class T{
public static void main(String[] args){
Test t = new Test();
ArrayList<Integer> arr = t.myNumbers(); // You can catch the returned integer arraylist into an arraylist.
}
}
假設你有這樣的事情:
public class MyFirstClass {
...
public ArrayList<Integer> myNumbers() {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(11);
numbers.add(3);
return(numbers);
}
...
}
您可以像這樣調用該方法:
public class MySecondClass {
...
MyFirstClass m1 = new MyFirstClass();
List<Integer> myList = m1.myNumbers();
...
}
由於您嘗試調用的方法不是static ,因此您必須創建提供此方法的類的實例。 創建實例后,您將可以訪問該方法。
請注意,在上面的代碼示例中,我使用了這一行: List<Integer> myList = m1.myNumbers();
. 這可以通過以下方式更改: ArrayList<Integer> myList = m1.myNumbers();
. 但是,通常建議對接口進行編程,而不是對具體實現進行編程,因此我對您使用的方法的建議是執行以下操作:
public List<Integer> myNumbers() {
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(11);
numbers.add(3);
return(numbers);
}
這將允許您將該列表的內容分配給實現List
接口的任何對象。
您需要實例化它包含的類,或使方法靜態。
因此,如果它包含在 Foo 類中:
Foo x = new Foo();
List<Integer> stuff = x.myNumbers();
或者簡寫:
List<Integer> stuff = new Foo().myNumbers();
或者如果你讓它像這樣靜態:
public static List<Integer> myNumbers() {
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(11);
numbers.add(3);
return(numbers);
}
你可以這樣稱呼它:
List<Integer> stuff = Foo.myNumbers();
List<Integer> numbers = new TheClassName().myNumbers();
如果 Foo 是包含此方法的類
class Foo{
public ArrayList<Integer> myNumbers() {
//code code code
}
}
然后
new Foo().myNumbers();
MyClass obj = new MyClass();
ArrayList<Integer> numbers = obj.myNumbers();
您可以在其他課程上使用
public ArrayList<Integer> myNumbers = new Foo().myNumbers();
或者
Foo myClass = new Foo();
public ArrayList<Integer> myNumbers = myclass.myNumbers();
可以調用您的方法,並且可以像這樣存儲arraylist
YourClassName class = new YourClassName();
Arraylist<Integer> numbers = class.numbers();
這也允許在此類中進一步操作數組列表
您還可以創建 prime_f 之類的方法,然后調用 ArrayList 如下:
public static ArrayList<Integer> prime_f(int number) {
ArrayList<Integer> counter = new ArrayList<Integer>();
for (int i = 2;i < number;i++) {
while(number%i == 0) {
counter.add(i);
number = number/i;
}
}
if (number > 2) {
counter.add(number);
}
return counter;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.