Jawaban:
Lihat Dokumentasi
Deklarasi impor statis analog dengan deklarasi impor normal. Di mana deklarasi impor normal mengimpor kelas dari paket, yang memungkinkan mereka untuk digunakan tanpa kualifikasi paket, deklarasi impor statis mengimpor anggota statis dari kelas, yang memungkinkan mereka untuk digunakan tanpa kualifikasi kelas.
Jadi kapan Anda harus menggunakan impor statis? Sangat hemat! Hanya gunakan saat Anda tergoda untuk mendeklarasikan salinan konstanta lokal, atau menyalahgunakan warisan (Constant Interface Antipattern). Dengan kata lain, gunakan ketika Anda membutuhkan akses sering ke anggota statis dari satu atau dua kelas. Jika Anda terlalu sering menggunakan fitur impor statis, itu dapat membuat program Anda tidak dapat dibaca dan tidak dapat dipelihara, mencemari namespace-nya dengan semua anggota statis yang Anda impor. Pembaca kode Anda (termasuk Anda, beberapa bulan setelah Anda menulisnya) tidak akan tahu dari mana kelas anggota statis. Mengimpor semua anggota statis dari kelas dapat sangat berbahaya untuk dibaca; jika Anda hanya perlu satu atau dua anggota, impor mereka secara individual. Digunakan dengan tepat, impor statis dapat membuat program Anda lebih mudah dibaca,
Tidak ada perbedaan antara kedua impor yang Anda sebutkan. Anda dapat, bagaimanapun, menggunakan impor statis untuk memungkinkan akses wajar tanpa pengecualian ke anggota statis kelas lain. Di mana saya dulu harus melakukan ini:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
Aku bisa melakukan ini:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
Anda dapat melihat lebih banyak di dokumentasi .
Impor statis digunakan untuk mengimpor bidang / metode statis suatu kelas alih-alih:
package test;
import org.example.Foo;
class A {
B b = Foo.B_INSTANCE;
}
Kamu bisa menulis :
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
Ini berguna jika Anda sering menggunakan konstanta dari kelas lain dalam kode Anda dan jika impor statis tidak ambigu.
Btw, dalam contoh Anda "import static org.example.Myclass;" tidak akan berfungsi: impor untuk kelas, impor statis untuk anggota kelas statis.
Ide dasar impor statis adalah bahwa setiap kali Anda menggunakan kelas statis, variabel statis atau enum, Anda dapat mengimpornya dan menyelamatkan diri dari pengetikan.
Saya akan menguraikan poin saya dengan contoh.
import java.lang.Math;
class WithoutStaticImports {
public static void main(String [] args) {
System.out.println("round " + Math.round(1032.897));
System.out.println("min " + Math.min(60,102));
}
}
Kode yang sama, dengan impor statis:
import static java.lang.System.out;
import static java.lang.Math.*;
class WithStaticImports {
public static void main(String [] args) {
out.println("round " + round(1032.897));
out.println("min " + min(60,102));
}
}
Catatan : impor statis dapat membuat kode Anda membingungkan untuk dibaca.
import static java.lang.Math
tanpa tanda bintang?
perbedaan antara "impor com.showboy.Myclass statis" dan "impor com.showboy.Myclass"?
Yang pertama harus menghasilkan kesalahan kompilator karena impor statis hanya berfungsi untuk mengimpor bidang atau tipe anggota. (dengan asumsi MyClass bukan kelas dalam atau anggota dari showboy)
Saya pikir Anda maksud
import static com.showboy.MyClass.*;
yang membuat semua bidang statis dan anggota dari MyClass tersedia di unit kompilasi yang sebenarnya tanpa harus memenuhi syarat mereka ... seperti yang dijelaskan di atas
Itu import
memungkinkan programmer java untuk mengakses kelas suatu paket tanpa kualifikasi paket.
The static import
fitur memungkinkan untuk mengakses anggota statis kelas tanpa kualifikasi kelas.
The import
menyediakan akses ke kelas dan antarmuka sedangkan static import
menyediakan akses ke anggota statis kelas.
Contoh:
Dengan impor
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
Dengan impor statis
import static java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
out.println("Hello");//Now no need of System.out
out.println("Java");
}
}
Lihat juga: Apa impor statis di Java 5
Katakanlah Anda memiliki bidang dan metode statis di dalam kelas yang disebut MyClass
di dalam paket yang disebut myPackage
dan Anda ingin mengaksesnya secara langsung dengan mengetik myStaticField
atau myStaticMethod
tanpa mengetik setiap kali MyClass.myStaticField
atau MyClass.myStaticMethod
.
Catatan: Anda perlu melakukan
import myPackage.MyClass
atau myPackage.*
untuk mengakses sumber daya lainnya
The static
pengubah setelah import
adalah untuk mengambil / menggunakan medan statis kelas. Satu area yang saya gunakan import static
adalah untuk mengambil konstanta dari sebuah kelas. Kami juga dapat menerapkan import static
metode statis. Pastikan untuk mengetik import static
karena static import
salah.
Apa yang ada static import
di Jawa - JavaRevisited - Sumber yang sangat bagus untuk mengetahui lebih banyak tentangimport static
.