13 Nisan 2020 Pazartesi

Objects Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.Objects;
Açıklaması şöyle.
Objects is a class consists of static utility methods for operating on objects, or checking certain conditions before an operation.
Bu sınıf Files, Arrays gibi tamamen static metodlardan oluşan yardımcı bir sınıftır.

Bu sınıf en çok equals ve hashCode metodlarını override etmek için kullanılır.
Örnek
Şöyle yaparız.
public Foo(Foo that) { // not a copy constructor!!!
  this.category = that.category;
  this.amount = 0;
  this.price = 0;
}

public int hashCode() {
  return Objects.hashCode(category);
}

public boolean equals(Object another) {
  if (another == this) return true;
  if (!(another instanceof Foo)) return false;
  Foo that = (Foo) another;
  return Objects.equals(this.category, that.category);
}
checkIndex metodu
Java 9 ile geliyor. Belirtilen indeks değerinin, Collection.size()'dan küçük olduğunu kontrol eder.

equals metodu
Metodun içi şöyle.
public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}
Şöyle yaparız.
public class Foo {
  private String name;
    
  @Override
  public boolean equals(Object o) {

    if (o == this) return true;
    if (!(o instanceof Foo)) {
      return false;
    }
    Foo foo = (Foo) o;
    return Objects.equals(name, foo.name);
 }
    
}
hash metodu
Şöyle yaparız.
public class Foo {
  private String name;

  
  @Override
  public int hashCode() {
    return Objects.hash(name);
  }
}
isNull metodu
Metodun içi şöyle.
public static boolean isNull(Object obj) {
  return obj == null;
}
nonNull metodu
true veya false döner. Şöyle yaparız.
// Print only non-null elements
list.stream()
    .filter(Objects::nonNull)
    .forEach(System.out::println);
requireNonNull metodu
Metodun için şöyle.
public static <T> T requireNonNull(T obj) {
  if (obj == null)
    throw new NullPointerException();
  return obj;
}
assert
Bu metod assert kullanımına tercih edilmeli. Eskiden şöyle yapardık. Bu kullanıma bence artık gerek yok.
assert object != null;
Örnek
Hata mesajı olmadan şöyle yaparız. Nesne null ise exception fırlatılır,  değilse nesneyi döner.
public class A {

  private B b;
  private C c;
  
  public A(B b, C c) {
    this.b = Objects.requireNonNull(b);
    this.c = Objects.requireNonNull(c); 
  }
}
Örnek
Hata mesajı ile şöyle yaparız.
public class Foo {
  private final Bar bar;

  public Foo(Bar bar) {
    Objects.requireNonNull(bar, "bar must not be null");
    this.bar = bar;
  }
}
requireNonNullElse metodu
Java 9 ile geliyor.
Örnek
Şöyle yaparız.
String foo = null;
Objects.requireNonNullElse(foo, "nonNull");//returns the string "nonNull"
Örnek
Şöyle yaparız
Objects.requireNonNullElse(serviceResponse.getEntryList(),
                           Collections.emptyList())
Örnek
Eğer her iki parametre de null ise exception fırlatır. Şöyle yaparız.
String foo = null, bar = null;
Objects.requireNonNullElse(foo, bar);//throws a NullPointerException
toString metodu
Eğer nesnenin toString metodu override edilmemişse java.lang.String@1e23 gibi bir değer döner.

Metodun içi şöyle.
public static String toString(Object o) {
  return String.valueOf(o);
}
Örnek
Şöyle yaparız.
String description = Objects.toString(...);
wait metodu
Açıklaması şöyle.
[...] This method causes the current thread (call it T) to place itself in the wait set for this object and then to relinquish any and all synchronization claims on this object. [...]

Hiç yorum yok:

Yorum Gönder