導航:首頁 > 編程語言 > java泛型默認

java泛型默認

發布時間:2025-02-17 18:33:09

A. 請問,java中,泛型數組的數組怎麼初始化(就是ArrayList數組)

既然你暗示就是ArrayList了,
首選就從Arraylist想了

可以試試:

import java.util.ArrayList;
public class Test{
public static void main(String[]args){
ArrayList<ArrayList<Integer>> als = new ArrayList<ArrayList<Integer>> ();
ArrayList<Integer> a1 = new ArrayList<Integer>();
ArrayList<Integer> a2 = new ArrayList<Integer>();
ArrayList<Integer> a3 = new ArrayList<Integer>();
ArrayList<Integer> a4 = new ArrayList<Integer>();
//下面是添加行,你可以用循環添加固定的行
//每一列就是一個ArrayList<Integer>,你可以任意添加,長度不固定吧
als.add(a1);
als.add(a2);
als.add(a3);
als.add(a4);
System.out.println(als.size());

}
}

tao_3000的方法可行,只是Integer[]創建時要指定維數
可以自己寫個演算法自動增加維數

對於你說的數據量問題,個人理解是這樣的:

達到了幾十萬幾百萬的數據量的時候,我想大概就是從資料庫中吧數據讀取出來,進行批量的處理或者更新之類的操作。
你說得很對,如此龐大的數據量肯定會使效率降低,
但是我們完全可以一次從資料庫中讀取幾百條記錄,進行操作

關於如何從資料庫中一次讀取很少的記錄,jdbc和hibernate都有相應的實現

在者,數據量過大,呵呵,JVM可能崩潰哦 *_*

B. java,關於利用反射自動設置List<T>中T的類型

泛型可以用"<T>"代表,任意類型的。
解釋: 「<T>」是泛型的默認值,可以被任意類型所代替,如:
List<String> list = new ArayList<String>();這個就定義了一個String類型的」泛型「集合,那麼T的類型就是字元串。
List<T> list = new ArayList<T>();
可以賦值給list:list.add("StringBatch");
可以獲取到list的值:list.get(0),結果就是」StringBatch「;
這個時候T的類型也是String。也就是說T是動態的,可以被任意指定類型。

C. JAVA怎麼初始化泛型數組

首先由於Java泛型的實現,不可以使用如下的代碼

public class GenSet<E> {
private E a[];

public GenSet() {
a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation
}
}

那麼我們如何在保持類型安全的同時實現這一點?

我在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;
}

在這里,我們需要討論"checked" and "unchecked"。

Checked:strong typing。GenSet明確知道它包含的對象類型(即它的構造函數是使用Class <E>參數顯式調用的,當方法傳遞非類型E的參數時,方法將拋出異常。請參閱Collections.checkedCollection。

在這種情況,我們需要這樣寫:

public class GenSet<E> {

private E[] a;

public GenSet(Class<E> c, int s) {
// Use Array native method to create array
// of a type only known at run time
@SuppressWarnings("unchecked")
final E[] a = (E[]) Array.newInstance(c, s);
this.a = a;
}

E get(int i) {
return a[i];
}
}



Unchecked: weak typing。實際上沒有對作為參數傳遞的任何對象進行類型檢查。

在這種情況,我們需要這樣寫:

public class GenSet<E> {

private Object[] a;

public GenSet(int s) {
a = new Object[s];
}

E get(int i) {
@SuppressWarnings("unchecked")
final E e = (E) a[i];
return e;
}
}

請注意,數組的組件類型應該是類型參數的擦除:

public class GenSet<E extends Foo> { // E has an upper bound of Foo

private Foo[] a; // E erases to Foo, so use Foo[]

public GenSet(int s) {
a = new Foo[s];
}

...
}

所有的這些都源於Java中泛型一個的特性但也是一個weakness:它是使用擦除實現的,因此除非實施一些顯式機制(type-checking),否則「泛型」類不知道它們在運行時創建的類型參數,故無法提供 type-safety。

閱讀全文

與java泛型默認相關的資料

熱點內容
蘋果本地視頻文件在哪 瀏覽:103
6s怎樣找到qq中傳送的文件夾 瀏覽:306
只想看股票指數用什麼app 瀏覽:249
keilmdkwin10 瀏覽:776
dnf86版本刺客廢了 瀏覽:379
qq拼音詞庫 瀏覽:848
蘋果aqq怎麼注冊 瀏覽:766
微信公眾號昵稱侵權 瀏覽:992
怎麼讓程序開機啟動 瀏覽:795
技嘉怎麼換bios設置教程 瀏覽:156
改pdf文件大小 瀏覽:498
phytion編程後怎麼看運行情況 瀏覽:958
雲動網路科技有限公司 瀏覽:398
編程鍛煉哪些需求 瀏覽:897
查看鋼材價格用什麼app 瀏覽:511
穿越火線384版本 瀏覽:716
電子化計劃哪個網站好 瀏覽:983
網線信號缺失如何改變網路信號 瀏覽:379
灌注樁拉拔試驗數據多少為合格 瀏覽:781
如何利用過往數據擬合方程 瀏覽:995

友情鏈接