24 Eylül 2018 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);
}
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;
}
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); 
  }
}
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. Şöyle yaparız.
String foo = null;
Objects.requireNonNullElse(foo, "nonNull");//returns the string "nonNull"
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
Metodun içi şöyle.
public static String toString(Object o) {
  return String.valueOf(o);
}
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