Java Static Import
Java’da pek fazla bilinmeyen, çok da önemli olmayan bir konuya değinmek istedim static kavramını anlatıp bundan hiç bahsetmemiş olduğumu fark ettiğim zaman…
Python da çalışmış olanlar bilirler, kütüphane import etme sisteminde şöyle birkaç yöntem vardır python’da:

import math

from math import sqrt

from math import *

____

Buna benzer bir özellik Java’da da mevcuttur. İşte buna static import diyoruz. Oracle’ın bununla ilgili sayfasından bir kısım çeviriyle durumu anlatmaya çalışayım.

Class’ların static metodlarına ulaşmak için programcı, class ismini referans olarak belirtmelidir. classIsmi.metodIsmi şeklinde kullanmalıdır. örneğin;

double r = Math.cos(Math.PI * theta);

Bunu kolaylaştırmak için insanlar bazen static elemanları bir interface’e koyup buradan kullanmayı tercih ederler. Fakat bu kötü bir fikirdir. Aslında bu kötü fikrin bir ismi de var. Constant InterfaceAntipattern  . Bir class’ı sadece başka bir class’ın static elemanları için kullanmak sadece küçük bir detaydır. Bir class bir interface’iimplements ettiğinde (uyguladığında), bu class’ın public API’si durumuna gelir. Kodlama detayları public API’lere sızmamalıdır.

static import yapısı, static elemanlara, bunları kapsayan tip olmadan ulaşabilmeye izin verir. Programımız, ya elemanları teker teker import eder;
import static java.lang.Math.PI;
ya da topluca import eder.
import static java.lang.Math.*;
Bunlar import edildikten sonra kullanım şu şekilde yapılır.

double r = cos(PI * theta);

static import bildirimi normal import’a benzerdir. Normal import package’lardaki class’ları import ederken, package ve class belirtmeden kullanmaya izin vererek, class içindeki static elemanları import eder.

Yani, ne zaman static import kullanmalıyız?
Olabildiğince kaçınarak. Sadece, kullanmadığımızda gereksiz yerel kopyalar oluşturmak zorunda kalıyorsak ya da inheritance ile ilgili yanlış bir kullanıma yol açıyorsa kullanmalıyız. (bkz. Constant Interface Antipattern). Diğer bir deyişle, bir veya birkaç tane class’ın static elemanlara sık sık ulaşmanız gerektiğinde kullanın. Eğer bu özelliği aşırı kullanırsanız, programınızı okunmaz hale getirir.namespaceini import ettiğiniz birçok static elemanla kirletir. Kodunuzu okuyanlar (siz de dahil, birkaç ay sonra düşünün) hangi class’tan hangi static elemanın geldiğini bilmiyor olacak. Bütün static elemanları import etmek özellikle okunabilirliğe zararlıdır. Eğer bir veya iki elemana ihtiyaç duyuyorsanız, sadece onları import edin. Uygun kullanıldığında, static import; programınızı daha rahat anlaşılır, standart fazlalıklardan (class isimleri) arındırılmış bir hale getirir.

Matematik kütüphanesi ve static importun kullanımına dair örnek aşağıdadır.

[php]
// StaticImportTest.java
// Static import of Math class methods.
import static java.lang.Math.*;

public class StaticImportTest
{
public static void main(String[] args) {
System.out.printf("Kare( 900.0 ) = %.1f\n", sqrt(900.0));//Karesini aldık
System.out.printf("Tavan( -9.8 ) = %.1f\n", ceil(-9.8));//üst sınıra yuvarlar
System.out.printf("E = %f\n", E);//Log E nin değerini döndürür.
System.out.printf("PI = %f\n", PI);//pi sayısını verir.
}
}
[/php]

Math kütüphanesiyle ilgili internetten bulduğum görselde aşağıdadır.JavaMathBizi takip etmeyi unutmayın.İyi Çalışmalar 🙂
twitter.com/KodumunDunyasi

https://www.facebook.com/kodumundunyasi