Saya tidak dapat menginisialisasi Daftar
List<String> supplierNames = new List<String>();
supplierNames.add("sup1");
supplierNames.add("sup2");
supplierNames.add("sup3");
System.out.println(supplierNames.get(1));
Saya menghadapi galat berikut:
Tidak instantiate jenis
Daftar<String>
Bagaimana saya bisa instantiate Daftar<String>
?
Jika anda memeriksa API untuk Daftar
anda'll melihat itu mengatakan:
Interface List<E>
Menjadi seorang antarmuka
berarti tidak bisa dipakai (tidak ada baru Daftar()
mungkin).
Jika anda memeriksa bahwa link, anda'll menemukan beberapa kelas dia yang menerapkan
Daftar`:
Semua Dikenal Melaksanakan Kelas:
AbstractList
,AbstractSequentialList
,ArrayList
,AttributeList
,CopyOnWriteArrayList
,LinkedList
,RoleList
,RoleUnresolvedList
,Stack
,Vektor
Mereka dapat menjadi contoh. Menggunakan link mereka untuk tahu lebih banyak tentang mereka, I. E: untuk mengetahui mana yang lebih cocok dengan kebutuhan anda.
3 paling sering digunakan orang-orang yang mungkin adalah:
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
Bonus:
Anda juga dapat menurunkannya dengan nilai-nilai, dengan cara yang lebih mudah, menggunakan Array
kelas
, sebagai berikut:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
Tapi catatan anda tidak diizinkan untuk menambahkan elemen ke dalam daftar itu, seperti's fixed-size
.
Bisa't instantiate sebuah antarmuka tetapi ada beberapa implementasi:
JDK2
List<String> list = Arrays.asList("one", "two", "three");
JDK7
//diamond operator
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
JDK8
List<String> list = Stream.of("one", "two", "three").collect(Collectors.toList());
JDK9
// creates immutable lists, so you can't modify such list
List<String> immutableList = List.of("one", "two", "three");
// if we want mutable list we can copy content of immutable list
// to mutable one for instance via copy-constructor (which creates shallow copy)
List<String> mutableList = new ArrayList<>(List.of("one", "two", "three"));
Plus ada banyak cara lain yang disediakan oleh perpustakaan lain seperti Jambu.
List<String> list = Lists.newArrayList("one", "two", "three");
Daftar adalah Antarmuka, anda tidak instantiate sebuah Interface, karena interface adalah sebuah konvensi, metode apa yang harus anda kelas. Dalam rangka untuk instantiate, anda perlu beberapa realisasi(implementasi) dari antarmuka tersebut. Coba kode di bawah ini dengan sangat populer implementasi dari Daftar interface:
List<String> supplierNames = new ArrayList<String>();
atau
List<String> supplierNames = new LinkedList<String>();
Anda akan perlu menggunakan ArrayList<String>
atau semacamnya.
Daftar<String>
adalah sebuah antarmuka.
Gunakan ini:
import java.util.ArrayList;
...
List<String> supplierNames = new ArrayList<String>();
Dalam kebanyakan kasus, anda ingin sederhana ArrayList
- sebuah implementasi dari Daftar
Sebelum JDK versi 7
List<String> list = new ArrayList<String>();
JDK 7 dan kemudian anda dapat menggunakan diamond operator
List<String> list = new ArrayList<>();
Informasi yang ditulis di sini Oracle dokumentasi - Koleksi
Daftar
ArrayList - daftar dilaksanakan selama array
List<String> supplierNames = new ArrayList<String>();
LinkedList - daftar dilaksanakan seperti rantai yang saling berhubungan dari unsur-unsur
List<String> supplierNames = new LinkedList<String>();
Tergantung pada apa jenis Daftar yang ingin anda gunakan, sesuatu seperti
List<String> supplierNames = new ArrayList<String>();
harus membuat anda pergi.
Daftar antarmuka, ArrayList merupakan salah satu implementasi dari Daftar antarmuka. Lebih lanjut implementasi yang mungkin lebih sesuai dengan kebutuhan anda dapat menemukan dengan membaca JavaDocs Daftar interface.
Jika anda hanya ingin membuat sebuah abadi Daftar<T>
dengan hanya one objek di dalamnya, anda bisa menggunakan API ini:
List<String> oneObjectList = Collections.singletonList("theOnlyObject”);
Info lebih lanjut: docs
Daftar adalah sebuah Antarmuka . Anda bisa menggunakan Daftar untuk menginisialisasi.
List<String> supplierNames = new ArrayList<String>();
Ini adalah beberapa Daftar diimplemetasikan kelas,
ArrayList, LinkedList, Vector
Anda bisa menggunakan ini sebagai per kebutuhan anda. Ini masing-masing kelas memiliki fitur sendiri.
Hanya dalam kasus, salah satu yang masih berlama-lama di sekitar pertanyaan ini. Karena, aku melihat satu atau dua pengguna baru lagi mengajukan pertanyaan yang sama dan semua orang mengatakan itu , Tidak ada yang dapat anda't melakukan itu, Sayang kehati-hatian, Terlepas dari semua jawaban yang diberikan di sini, saya ingin memberikan Informasi tambahan -
Ya, anda dapat benar-benar melakukan, Daftar
List<Integer> list = new List<Integer>(){
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean contains(Object o) {
// TODO Auto-generated method stub
return false;
}
..... dan Sebagainya (tidak Bisa menulis semua metode.)
Ini adalah contoh dari Anonim kelas. Yang benar ketika seseorang serikat , Tidak ada anda tidak bisa instantiate sebuah antarmuka, dan yang's benar. Tapi anda tidak pernah bisa mengatakan , Anda tidak BISA menulis List List = new List(); tapi, jelas anda dapat melakukan itu dan bahwa's keras pernyataan untuk membuat yang dapat Anda't melakukan.
Kami menciptakan soyuz-to untuk menyederhanakan 1 masalah: bagaimana mengkonversi X
untuk Y
(misalnya, String
untuk bilangan Bulat
). Membangun suatu objek adalah juga jenis konversi sehingga memiliki fungsi sederhana untuk membangun Peta
, Daftar
, Set
:
``jawa impor io.thedocs.soyuz.untuk;
Daftar