我正在android环境中工作,并尝试了以下代码,但它似乎没有工作.
String [] stockArr = (String[]) stock_list.toArray();
Run Code Online (Sandbox Code Playgroud)
如果我定义如下:
String [] stockArr = {"hello", "world"};
Run Code Online (Sandbox Code Playgroud)
有用.有什么东西我不见了吗?
由于Java泛型的实现,您不能拥有这样的代码:
public class GenSet<E> {
private E a[];
public GenSet() {
a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation
}
}
Run Code Online (Sandbox Code Playgroud)
如何在保持类型安全的同时实现这一点?
我在Java论坛上看到了这样的解决方案:
import java.lang.reflect.Array;
class Stack<T> {
public Stack(Class<T> clazz, int capacity) {
array = (T[])Array.newInstance(clazz, capacity);
}
private final T[] array;
}
Run Code Online (Sandbox Code Playgroud)
但我真的不知道发生了什么.
我如何在Java中将ArrayList<String>对象转换为String[]数组?
在网上搜索,目前尚不清楚Java 8是否支持Android开发.
在我下载/设置Java 8之前,有人可以在任何"官方"文档中指出我说Java 8是否支持Android开发.
这类似于这个问题: 如何在Java中将int []转换为Integer []?
我是Java的新手.我怎么能转换List<Integer>到int[]Java中?我很困惑,因为List.toArray()实际上返回一个Object[],可以强制转换为虚空Integer[]或int[].
现在我正在使用循环来执行此操作:
int[] toIntArray(List<Integer> list){
int[] ret = new int[list.size()];
for(int i = 0;i < ret.length;i++)
ret[i] = list.get(i);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
我相信有更好的方法可以做到这一点.
List<String> list = getNames();//this returns a list of names(String).
String[] names = (String[]) list.toArray(); // throws class cast exception.
Run Code Online (Sandbox Code Playgroud)
我不明白为什么?任何解决方案,解释表示赞赏.
如何在Java中将数组列表转换为二维数组?
//Prepare the list
List<Object[]> conf = new LinkedList<Object[]>();
conf.add(new Object[]{ "FOO", "BAR"});
conf.add(new Object[]{ "FOO", "BAR"});
Run Code Online (Sandbox Code Playgroud)
我试过了:
Object[][] array = (Object[][]) conf.toArray(new Object[0]);
Run Code Online (Sandbox Code Playgroud)
但它失败了ClassCastException:
java.lang.RuntimeException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.Object;
Run Code Online (Sandbox Code Playgroud) 我怎么能转换ArrayList<String>成String[]?我试图使用这段代码:
ArrayList<String> al = getResources()...; //getting string-array from values.xml
String[] data = new String[al.size()];
for (int i = 0; i != al.size(); i++) {
data[i] = al.get(i);
}
Run Code Online (Sandbox Code Playgroud)
但它很慢.我怎么能更快地做到这一点?
我有一个枚举数组,如下所示:
enum CountryEnum {
MADAGASCAR,
LESOTHO,
BAHAMAS,
TURKEY,
UAE
}
List<CountryEnum> countryList = new ArrayList<>();
countryList.add(CountryEnum.MADAGASCAR);
countryList.add(CountryEnum.BAHAMAS);
Run Code Online (Sandbox Code Playgroud)
如何将我的转换countryList成String[]?
我试过这样:
String[] countries = countryList.toArray(String::new);
Run Code Online (Sandbox Code Playgroud)
但它又回到了我ArrayStoreException。
我有一个接受类参数的方法。我需要为任何类型的类创建此类对象的列表。每个类可能有一个带有不同数量参数的构造函数。
这就是我到目前为止所取得的成果。它有效,但显然它不够通用。这段代码有更通用的代码吗?
public List<Object> convertSeparatedListToJsonList(String pipedStr, String separatorRegex, Class c){
try {
Class<?> cCtor = Class.forName(c.getTypeName());
List<String> valuesList = Stream.of(pipedStr.split(separatorRegex)).map(String::trim).collect(Collectors.toList());
int valuesNumber = valuesList.size();
switch (valuesNumber) {
case 1 -> {
Constructor<?> ctor = cCtor.getConstructor(String.class);
return List.of(ctor.newInstance(valuesList.get(0)));
}
case 2 -> {
Constructor<?> ctor = cCtor.getConstructor(String.class, String.class);
return List.of(ctor.newInstance(valuesList.get(0), valuesList.get(1)));
}
case 4 -> {
Constructor<?> ctor = cCtor.getConstructor(String.class, String.class, String.class, String.class);
return List.of(ctor.newInstance(valuesList.get(0), valuesList.get(1), valuesList.get(2), valuesList.get(3)));
}
case 5 -> {
Constructor<?> ctor = cCtor.getConstructor(String.class, String.class, String.class, String.class, String.class); …Run Code Online (Sandbox Code Playgroud)