19 Ocak 2020 Pazar

ReflectionToStringBuilder Sınıfı

Giriş
Şu satırı dahil ederiz
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
Açıklaması şöyle
ReflectionToStringBuilder is a utility class in the Apache Commons Lang library that helps to create a string representation of an object’s state using reflection. It can be useful in debugging, logging, and other scenarios where we need to understand the current state of an object. 
Maven
Şu satırı dahil ederiz
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.12.0</version>
</dependency>
exclude metodu
Açıklaması şöyle
To exclude certain fields from the output string, you can use the exclude method of the ReflectionToStringBuilder class.
Örnek
Şöyle yaparız
String personAsString = new ReflectionToStringBuilder(person)
  .exclude("email")
  .toString();
System.out.println(personAsString);

// Output:
// Person@57a23b66[name=Fake Name,age=30]
Örnek
Şöyle yaparız
// You can also exclude multiple fields by passing them as a 
// comma-separated string or an array

String[] excludeFields = {"age", "email"};
String personAsString = new ReflectionToStringBuilder(person)
  .exclude(excludeFields)
  .toString();
System.out.println(personAsString);

// Output:
// Person@57a23b66[name=Fake Name]
toString metodu
Örnek
Şöyle yaparız
Person person = new Person("Fake Name", 30, "fake.name@example.com");
String personAsString = ReflectionToStringBuilder.toString(person);
System.out.println(personAsString);

// Output:
// Person@57a23b66[name=Fake Name,age=30,email=fake.name@example.com]
Örnek
Şöyle yaparız. Burada her bir Cookie nesnesi String'e çevriliyor ve bu String nesneleri StringJoiner tarafından birleştiriliyor
private String getCookieString(Cookie[] cookies){
  if(cookies == null)
    return "null";
  StringJoiner stringJoiner = new StringJoiner(",","[","]");
  for (Cookie cookie : cookies) {
    stringJoiner.add(ReflectionToStringBuilder.toString(cookie));
  }
  return stringJoiner.toString();
}
Örnek
Şöyle yaparız
// You can also leverage ReflectionToStringBuilder to generate multiline
// string representations of objects.

public class Person {
  private String name;
  private int age;
  private String email;

  // Constructors, getters, setters, and other methods omitted for brevity

  @Override
  public String toString() {
    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
  }
}
// Output:

Person@1b6d3586[
  name=Fake Name
  age=30
  address=a@b.com
]

17 Ocak 2020 Cuma

Lang3 ExceptionUtils Sınıfı

Giriş
Şu satırı dahil ederiz
import org.apache.commons.lang3.exception.ExceptionUtils;
getStackTrace metodu
Stack trace'i string olarak verir. Şöyle yaparız
String fullStackTrace = ExceptionUtils.getStackTrace(exception);

getRootCause metodu
İmzası şöyle. null dönebilir.
Throwable getRootCause(Throwable throwable) 
getRootCauseMessage metodu
İmzası şöyle.
String getRootCauseMessage(Throwable th) 
indexOfThrowable metodu
Exception nesnesinin tam olarak belirtilen tip olup olmadığını döner.Şöyle yaparız.
if (ExceptionUtils.indexOfThrowable(exception, ExpectedException.class) != -1) {
  // exception is or has a cause of type ExpectedException.class
}
indexOfType metodu
Exception nesnesinin belirtilen tip veya kalıtan tip olup olmadığını döner.Şöyle yaparız.
if (ExceptionUtils.indexOfType(exception, ExpectedException.class) != -1) {
  // exception is or has a cause of type ExpectedException.class or its subclass
}

10 Ocak 2020 Cuma

Lang3 BasicThreadFactory Sınıfı

Giriş
Şu satırı dahil ederiz.
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
namingPattern metodu
Şöyle yaparız.
// Create a factory that produces daemon threads with a naming pattern and
 // a priority
 BasicThreadFactory factory = new BasicThreadFactory.Builder()
     .namingPattern("workerthread-%d")
     .daemon(true)
     .priority(Thread.MAX_PRIORITY)
     .build();
 // Create an executor service for single-threaded execution
 ExecutorService exec = Executors.newSingleThreadExecutor(factory);

9 Ocak 2020 Perşembe

CollectionUtils Sınıfı

containsAny metodu
Şöyle yaparız.
CollectionUtils.containsAny(someCollection1, someCollection2)
disjunction metodu
symmetricDifference() anlamına gelir. A ve B'nin kesişimi hariç A + B'yi verir.
Örnek
Şöyle yaparız.
CollectionUtils.disjunction(s1, s2)
Örnek
Elimizde şöyle bir kod olsun
List<String> oldKeys = Arrays.asList("key0","key1","key2","key5");
List<String> newKeys = Arrays.asList("key0","key2","key5", "key6");
Şöyle yaparız. Çıktı olarak [key1, key6] alırız.
List<String> list = new ArrayList<>(CollectionUtils.disjunction(newKeys, oldKeys));
emptyIfNull metodu
Verilen parametre null ise empty collection döner. ListUtils sınıfında da benzer bir metod var.

intersection metodu
Şöyle yaparız. A kesişim B'yi verir.
Collection<Integer> collection1 = Arrays.asList(1, 2, 4, 5, 7, 8);
Collection<Integer> collection2 = Arrays.asList(2, 3, 4, 6, 8);

Collection<Integer> intersection = CollectionUtils.intersection(collection1,collection2);
System.out.println(intersection); // [2, 4, 8]
isEqualCollection metodu
Örnek
Şöyle yaparız
List<Integer> list3 = new ArrayList<>();
list1.add(3);
list1.add(4);
List<Integer> list4 = new ArrayList<>();
list2.add(3);
list2.add(4);
boolean equalCollection = CollectionUtils.isEqualCollection(list3, list4);
System.out.println("Is Equal?:" + equalCollection);
isEmpty metodu
Açıklaması şöyle.
public static boolean isEmpty(Collection<?> coll)

Null-safe check if the specified collection is empty.

Null returns true.
Metodun içi şöyle.
return coll == null || coll.isEmpty();
Örnek
Şöyle yaparız.
List<String> list = ...;

if(CollectionUtils.isEmpty(list)) {  // line3
  ...
}
isNotEmpty metodu
Örnek
Şöyle yaparız.
List<String> stringList = new ArrayList<>();
boolean notEmpty = CollectionUtils.isNotEmpty(stringList);
System.out.println("Is Empty?"+ notEmpty);
select metodu

Şöyle yaparız.
Collection<Cat> smallList = CollectionUtils.select(bigList, new Predicate() {
  public boolean evaluate(Object o) {
    return ...;
    }
});
subtract metodu
A - B 'yi verir. Yani A'nın B ile kesişmeyen kısmıdır. Bu metodun ismi belki difference() olsa daha iyi olurdu.

Örnek
Şöyle yaparız.
Collection<Integer> collection1 = Arrays.asList(1, 2, 4, 5, 7, 8);
Collection<Integer> collection2 = Arrays.asList(2, 3, 4, 6, 8);


Collection<Integer> subtract = CollectionUtils.subtract(collection1, collection2);
System.out.println(subtract); // [1, 5, 7]
union metodu
Örnek
Şöyle yaparız. A + B 'yi verir.
Collection<Integer> collection1 = Arrays.asList(1, 2, 4, 5, 7, 8);
Collection<Integer> collection2 = Arrays.asList(2, 3, 4, 6, 8);

Collection<Integer> union = CollectionUtils.union(collection1, collection2);
System.out.println(union); // [1, 2, 3, 4, 5, 6, 7, 8]
Örnek
Şöyle yaparız
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);

Collection<Integer> union = CollectionUtils.union(list1, list2);
System.out.println(union);

Collection<Integer> intersection = CollectionUtils.intersection(list1, list2);
System.out.println(intersection);

Collection<Integer> disjunctionList = CollectionUtils.disjunction(list1, list2);
System.out.println(disjunctionList);

Collection<Integer> subtract = CollectionUtils.subtract(list1, list2);
System.out.println(subtract);