我想从java中的非类方法返回一个arraylist,我已经搜索过但到目前为止没有找到任何内容。
{
int d=e.length();
ArrayList list2 = new ArrayList();
for (int i=0;i<d;i++)
{
list2.add('_');
}
return list2;
}
非常感谢!
答案 0 :(得分:2)
所有方法必须是静态方法或实例方法;由该类或其中一个实例拥有。它不像C或C ++,你可以完全拥有一个类之外的函数。
但是,您可以进行静态导入。
public class UtilClass {
public static ArrayList getList() { ... return someList; }
}
import static UtilClass.getList;
这会让你或多或少地对待它。但是,它必须定义作为类的一部分,并且是静态的。
编辑:我忘记在示例中将getList设为静态。
答案 1 :(得分:1)
您需要做的就是将返回类型放在签名中,然后返回列表
public class Example {
// a static method
public static List someStaticMethod(){
// create and return a List
}
// this method is not static
public List someMethod(){
// create and return a List
}
}
请注意,因为ArrayList
扩展List
,您可以将返回类型设置为其中之一。
List
更通用,您可以返回任何类型的列表。这很有用,因为如果您想更改您使用的内部列表(例如从ArrayList
更改为LinkedList
),则无需在使用该方法的任何位置更改API。
但是,如果您使用的列表实现具有自己的List
接口未定义的方法,那么当您从方法中获取列表时,您将无法访问这些方法,除非你要么扮演(母羊),要么指定确切的回归类型。
答案 2 :(得分:0)
答案 3 :(得分:0)
您的方法定义应该是这样的。
public ArrayList<Character> getCharList(String e)
{
int d = e.length();
// as of Java 1.5, generic collections are available
ArrayList<Character> list2 = new ArrayList<Character>();
for (int i=0;i<d;i++) {
list2.add(new Character('_'));
}
return list2;
}
我假设您正在调用String的length()方法。请适应您的情况。
要获取列表,请执行以下操作:
String e = "a string";
ArrayList<Character> myList = myClass.getCharList(e);
答案 4 :(得分:0)
任何非void
的方法都可以返回任何类型的数据,但是,您只能返回方法允许的类型。例如,以public int
开头的方法只能返回int
值。要返回ArrayList,您的方法必须在声明中包含ArrayList
,如下所示:
public ArrayList thisReturnsAnArrList(ArrayList list) {
return list; //'list' is of the type 'ArrayList'
}
但是,您可以更宽松并且方法返回List
。由于多个类继承自List
(即ArrayList
和LinkedList
),因此您可以返回任何扩展List
的值。