Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Menggunakan JShell di Java 9 di NetBeans 9.0, Bagian 3

JShell adalah alat baris perintah untuk menjalankan cuplikan kode di lingkungan shell tanpa harus mengkompilasi dan menjalankan aplikasi lengkap. JShell adalah fitur baru di Java 9. JShell dapat digunakan untuk menguji dan men-debug potongan kode saat mengembangkan aplikasi. Masukan JShell harus berupa potongan kode lengkap. Kami memperkenalkan JShell dengan dua artikel, "Menggunakan JShell di Java 9 di NetBeans 9.0, Bagian 1," dan "Menggunakan JShell di Java 9 di NetBeans 9.0, Bagian 2," di mana kami membahas menjalankan impor pernyataan, mendeklarasikan dan menggunakan variabel, membandingkan String s, dan menjalankan pernyataan. Dalam artikel lanjutan ini, kita akan menjalankan snippet untuk metode Java. Artikel ini memiliki bagian berikut:

  • Mengatur Lingkungan
  • Menggunakan Metode
  • Memodifikasi Definisi Metode
  • Metode Kelebihan Beban
  • Membuat Referensi Maju ke Metode
  • Metode Daftar
  • Pengubah Tidak Diizinkan dalam Deklarasi Metode Tingkat Atas
  • Kesimpulan

Mengatur Lingkungan

Unduh dan instal NetBeans, seperti yang dibahas dalam artikel sebelumnya. Luncurkan JShell dengan memilih Tools>Open Java Platform Shell , seperti yang ditunjukkan pada Gambar 1.


Gambar 1: Alat>Buka Java Platform Shell

Menggunakan Metode

Sebuah metode dideklarasikan di JShell seperti halnya di aplikasi Java, dengan beberapa perbedaan, yang juga dibahas di bagian ini. Sebagai contoh, deklarasikan sebuah metode triple(int) yang membutuhkan int argumen dan mengembalikan int nilai.

int triple(int i) {
   return i*3;
}

Jalankan cuplikan kode di JShell dan sebuah metode akan dibuat.

[10]-> int triple(int i) {
   return i*3;
}
|  created method triple(int)

Panggil metode tiga kali dengan int nilai sebagai argumen.

triple(1)

Nilai argumen digandakan dan dikembalikan.

[11]-> triple(1)
|  $13 ==> 3
[12]->

Metode ini memiliki tipe dan parameter yang dikembalikan tetapi tidak ada pengubah akses seperti public , pribadi , atau dilindungi . Itu karena deklarasi metode tingkat atas, karena semua deklarasi tingkat atas, secara implisit bersifat publik. Pengubah akses apa pun dalam deklarasi metode tingkat atas diabaikan. Semua deklarasi metode berikut sama dengan deklarasi metode sebelumnya.

[1]-> private int triple(int i){
   return 3*i;
}
|  created method triple(int)
[2]-> protected int triple(int i){
   return 3*1;
}
|  replaced method triple(int)
[3]-> public int triple(int i){
   return 3*i;
}
|  replaced method triple(int)
[4]->

JShell menampilkan kesalahan waktu kompilasi, jika ada. Sebagai contoh, buat tipe kembalian metode triple sebagai String dan pesan kesalahan ditampilkan.

[10]-> String triple(int i) {
   return i*3;
}
|  Error:
|  incompatible types: int cannot be converted to java.lang.String
|     return i*3;
|     ^-^

Memodifikasi Definisi Metode

Pesan keluaran yang tidak akan dihasilkan oleh aplikasi Java dan sudah terdaftar dua kali di bagian ini adalah “metode yang diganti…”. Pesan tersebut menunjukkan bahwa definisi metode telah dimodifikasi. Ketentuan untuk mengganti/memodifikasi deklarasi metode dan deklarasi lainnya adalah untuk memfasilitasi pengujian.

Untuk memodifikasi atau mengganti metode tanpa mendefinisikan metode baru, tanda tangan metode, yang ditetapkan oleh nama metode dan parameter metode termasuk jumlah parameter serta jenis dan urutannya, tidak boleh dimodifikasi. Sebagai contoh, deklarasikan sebuah metode hello dengan tipe pengembalian void dan sebuah String jenis parameter.

[4]-> void hello(String s){
}
|  created method hello(String)

Selanjutnya, deklarasikan metode yang sama halo dengan tipe kembalian String , sebuah String jenis parameter, dan pernyataan kembali. Deklarasi metode sebelumnya untuk halo akan diganti.

[5]-> String hello(String s){
   return "Hello " + s;
}
|  replaced method hello(String)
[6]->

Panggil metode hello(String) dan definisi metode kedua dipanggil untuk mengeluarkan pesan “Hello John”.

[6]-> hello("John")
|  $5 ==> "Hello John"
[7]->

Argumen metode digabungkan dalam pemanggilan metode, jika diperlukan, seperti dalam cuplikan berikut.

[7]-> hello("John"+" & "+"Johnny")
|  $22 ==> "Hello John & Johnny"
[8]->

Dalam contoh modifikasi metode sebelumnya, kami mengganti tipe kembalian void dengan Tali . Kembali tidak harus dimodifikasi untuk mengganti metode. Sebagai contoh, tentukan metode halo sebagai berikut.

[15]-> String hello(String str1, String str2){
   return str1+str2;
}
|  created method hello(String,String)

Selanjutnya, ubah hanya pengembalian penyataan. Metode halo(String,String) akan diganti.

[16]-> String hello(String str1, String str2){
   return "Hello"+str1+str2;
}
|  replaced method hello(String,String)

Sebagai contoh lain dalam menjalankan cuplikan kode metode, tentukan metode hello(String str1, String str2) dengan tipe kembalian String[] .

[17]->
String[] hello(String str1, String str2){
   return new String[]{str1,str2};
}
|  created method hello(String,String)

Panggil metode dengan dua argumen untuk mengembalikan array.

[18]-> hello("John","Michael")
|  $39 ==> String[2] { "John", "Michael" }

Metode Kelebihan Beban

Sebuah metode mungkin kelebihan beban seperti dalam aplikasi Java. Deklarasikan sebuah metode hello(String s) .

[1]-> String hello(String s){
   return "Hello  " + s;
}
|  created method hello(String)

Panggil metode untuk mengeluarkan pesan.

[2]-> hello("John")
|  $1 ==> "Hello John"

Deklarasikan metode lain hello(String,String) .

[3]-> String hello(String str1, String str2){
   return str1+str2;
}
|  created method hello(String,String)

Panggil metode untuk mengeluarkan pesan.

[5]-> hello("Hello"," John")
|  $16 ==> "Hello John"

Membuat Referensi Maju ke Metode

JShell mendukung pembuatan referensi ke depan ke suatu metode. Sebuah referensi maju memanggil metode yang belum didefinisikan. Deklarasikan sebuah metode main(String) yang membuat referensi ke metode hello(String) , yang belum ditentukan. Metode main(String) memang dibuat tetapi tidak dapat dipanggil sampai metode hello(String) didefinisikan.

[1]-> String main(String str){
   return "Hello "+hello(str);
}
|  created method main(String), however, it cannot be invoked until
|  method hello(java.lang.String) is declared

Panggil metode main(String) dan sebuah pesan mendapatkan keluaran, yang menunjukkan bahwa pesan tersebut tidak dapat dipanggil.

[2]-> main("Michael")
|  attempted to call method main(String) which cannot be invoked
|  until method hello(java.lang.String) is declared

Deklarasikan metode hello(String) yang dirujuk oleh main(String) .

[3]-> String hello(String name){
   return name;
}
|  created method hello(String)

Selanjutnya, panggil metode main(String) lagi dan itu dipanggil.

[4]-> main("Michael")
|  $1 ==> "Hello Michael"

";" ditambahkan secara implisit jika tidak ditambahkan dalam deklarasi variabel tingkat atas dan deklarasi metode yang ditambahkan satu per baris. Tetapi ";" tidak tersirat dalam pernyataan dalam suatu metode. Sebagai contoh, nyatakan metode berikut dan error akan muncul.

[1]-> int average(int i,int j){
   return (i+j)/2
}
|  Error:
|  ';' expected

Metode Daftar

Metode yang didefinisikan dalam sesi JShell yang diberikan terdaftar dengan /metode memerintah. Untuk mendemonstrasikan, tentukan beberapa metode.

[1]-> int triple(int i) {
   return i*3;
}
|  created method triple(int)
[2]-> String hello(String s){
   return "Hello" + s;
}
|  created method hello(String)
[3]-> String hello(String str1, String str2){
   return str1+str2;
}
|  created method hello(String,String)
[4]-> int average(int i,int j){
   return (i+j)/0;
}
|  created method average(int,int)

Jalankan /metode perintah, dan semua metode yang ditambahkan akan terdaftar.

[5]-> /methods
|    printf (String,Object...)void
|    triple (int)int
|    hello (String)String
|    hello (String,String)String
|    average (int,int)int
[5]->

Pengubah Tidak Diizinkan dalam Deklarasi Metode Tingkat Atas

Sedangkan pengubah publik , pribadi , dan dilindungi dalam deklarasi metode tingkat atas diabaikan dan definisi metode dibuat secara implisit dengan akses publik, pengubah tertentu lainnya tidak diabaikan dan tidak diizinkan dalam deklarasi metode tingkat atas. Pengubah ini tidak diizinkan di tingkat atas karena ini memiliki signifikansi dalam konteks tertentu dan tidak cocok dalam konteks JShell, yaitu untuk menguji cuplikan kode.

Pengubah statis memiliki signifikansi ketika digunakan dengan metode dalam konteks kelas atau antarmuka, tetapi tidak di tingkat atas. Sebagai contoh, jalankan deklarasi metode berikut yang menyertakan static .

[1]-> static String hello(String name){
   return "Hello "+name;
}
|  Warning:
|  Modifier 'static' not permitted in top-level declarations,
|  ignored
|  static String hello(String name){
|    ^----^
|  created method hello(String)

statis pengubah diabaikan, Peringatan dikeluarkan, tetapi metode dibuat. Metode dapat dipanggil.

[2]-> hello("John")
|  $1 ==> "Hello John"
[3]->

Demikian pula, pengubah final tidak memiliki signifikansi di tingkat atas, baik dalam deklarasi metode atau deklarasi lainnya, karena JShell dirancang untuk menjalankan cuplikan kode secara dinamis dan mendeklarasikan metode (atau variabel, atau kelas) final akan membuat cuplikan tidak dapat dimodifikasi. Sebagai contoh, tambahkan final pengubah ke suatu metode. akhir pengubah diabaikan, Peringatan dibuat, dan definisi metode dibuat tanpa final .

[2]-> final int triple(int i){
   return 3*i;
}
|  Warning:
|  Modifier 'final' not permitted in top-level declarations,
|  ignored
|  final int triple(int i){
|    ^---^
|  created method triple(int)

Panggil metode dan itu akan menampilkan hasilnya.

[3]-> triple(5)
|  $1 ==> 15
[4]->

Beberapa pengubah lain juga tidak diizinkan di tingkat atas, baik dalam metode atau deklarasi lainnya. Sedangkan pengubah statis dan akhir diabaikan dan definisi metode dibuat, pengubah abstrak dan asli dalam metode tingkat atas menghasilkan kesalahan dan metode tidak dibuat.

[1]-> abstract String hello(String s){
   return "Hello "+s;
}
|  Error:
|  Modifier 'abstract' not permitted in top-level declarations
|  abstract String hello(String s){
|    ^------^
[1]->

[1]-> native String hello(String s){
   return "Hello "+s;
}
|  Error:
|  Modifier 'native' not permitted in top-level declarations
|  native String hello(String s){
|    ^----^

Pengubah default dan disinkronkan dalam deklarasi metode tingkat atas atau deklarasi lainnya juga tidak diizinkan dan menghasilkan kesalahan.

Kesimpulan

Pada artikel ini, kami membahas menjalankan cuplikan kode untuk metode Java di JShell. Dalam artikel berikutnya, kita akan membahas menjalankan cuplikan kode untuk kelas, antarmuka, dan larik Java.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Panduan untuk Fungsi PubNub

  2. Cara Bergabung di Beberapa Kolom

  3. Ambang Pengoptimalan – Pengelompokan dan Penggabungan Data, Bagian 5

  4. Tolong berhenti menggunakan anti-pola UPSERT ini

  5. ZDLRA – RMAN-20035 RECID tinggi tidak valid