我怎么能转换List成ArrayJava中?
检查以下代码:
ArrayList<Tienda> tiendas;
List<Tienda> tiendasList;
tiendas = new ArrayList<Tienda>();
Resources res = this.getBaseContext().getResources();
XMLParser saxparser = new XMLParser(marca,res);
tiendasList = saxparser.parse(marca,res);
tiendas = tiendasList.toArray();
this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas);
setListAdapter(this.adaptador);
Run Code Online (Sandbox Code Playgroud)
我需要tiendas使用值填充数组tiendasList.
我理解当使用具有泛型类型的varargs时,Java 7会发生这种情况;
但我的问题是......
当Eclipse说"它的使用可能会污染堆?"时,Eclipse到底意味着什么呢?
和
新@SafeVarargs注释如何阻止这种情况?
Java不允许我们这样做的原因是什么
private T[] elements = new T[initialCapacity];
Run Code Online (Sandbox Code Playgroud)
我可以理解.NET不允许我们这样做,因为在.NET中你有值类型,在运行时可以有不同的大小,但在Java中,所有类型的T都将是对象引用,因此具有相同的大小(如我错了请纠正我).
是什么原因?
我不理解泛型和数组之间的联系.
我可以使用泛型类型创建数组引用:
private E[] elements; //GOOD
Run Code Online (Sandbox Code Playgroud)
但无法使用泛型类型创建数组对象:
elements = new E[10]; //ERROR
Run Code Online (Sandbox Code Playgroud)
但它有效:
elements = (E[]) new Object[10]; //GOOD
Run Code Online (Sandbox Code Playgroud) 假设你有一个arraylist定义如下:
ArrayList<String> someData = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
稍后在您的代码中,由于泛型,您可以这样说:
String someLine = someData.get(0);
Run Code Online (Sandbox Code Playgroud)
并且编译器完全知道它将获得一个字符串.是的仿制药!但是,这将失败:
String[] arrayOfData = someData.toArray();
Run Code Online (Sandbox Code Playgroud)
toArray()将始终返回一个对象数组,而不是已定义的泛型数组.为什么该get(x)方法知道它返回什么,但toArray()默认为Objects?
我正在尝试做这样的事情: -
public static ArrayList<myObject>[] a = new ArrayList<myObject>[2];
Run Code Online (Sandbox Code Playgroud)
myObject是一个类.我收到此错误: - 通用数组创建(箭头指向新的.)
好吧,我一直在谷歌上网,我似乎无法找到任何问题的解决方案.我找到了很多解决方案,而不是任何合适的解决方案.
我需要创建一个泛型数组.但泛型类型本身扩展了Comparable.当我尝试以下内容时:
public class Hash<T extends Comparable<String>> {
private T[] hashTable;
private int tableSize;
Hash(int records, double load) {
tableSize = (int)(records / loadFactor);
tableSize = findNextPrime(tableSize);
hashTable = (T[])(new Object[tableSize]); //Error: Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是Object不能被强制转换为扩展Comparable的泛型.有没有解决的办法?
我想使用simpleJdbcInsert类和executeBatch方法
public int[] executeBatch(Map<String,Object>[] batch)
Run Code Online (Sandbox Code Playgroud)
所以我需要传递一个Map<String,Object>参数数组.如何创建这样的数组?我尝试的是
Map<String, Object>[] myArray = new HashMap<String, Object>[10]
Run Code Online (Sandbox Code Playgroud)
它是错误的:无法创建通用数组 Map<String, Object>
A List<Map<String, Object>>会更容易,但我想我需要一个数组.那么如何创建一个数组Map<String, Object>呢?谢谢
我不明白通用阵列创建的错误.
首先我尝试了以下内容:
public PCB[] getAll() {
PCB[] res = new PCB[list.size()];
for (int i = 0; i < res.length; i++) {
res[i] = list.get(i);
}
list.clear();
return res;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试这样做:
PCB[] res = new PCB[100];
Run Code Online (Sandbox Code Playgroud)
我必须遗漏一些似乎正确的事情.我试着查一下,我真的做到了.没有任何东西在点击.
我的问题是:我该怎么做才能解决这个问题?
错误是:
.\Queue.java:26: generic array creation
PCB[] res = new PCB[200];
^
Note: U:\Senior Year\CS451- file
uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
Run Code Online (Sandbox Code Playgroud)
工具已完成,退出代码为1