Как toString () работает с предикатом в следующей программе - PullRequest
0 голосов
/ 13 сентября 2018

Может кто-нибудь объяснить, как функция toString () работает с этим предикатом.Я понял лямбда-выражение, но как вызывается функция toString ().

import java.util.function.*;
import java.util.*;
class Demo{
public static void main(String arv[]){
    HashSet <Employee> hs = new HashSet<>();
    hs.add(new Employee("A",40000,25,"CSE"));
    hs.add(new Employee("B",50000,26,"CSE"));
    hs.add(new Employee("C",54000,30,"ECEadsa"));
    hs.add(new Employee("D",45000,25,"ECE"));
    hs.add(new Employee("E",60000,32,"CSE"));
    Predicate <Employee> emp = t -> t.salary > 50000;
    Predicate <Employee> emp1 = emp.and( t -> t.department.length()>5);
    for(Employee e: hs)
    if (emp1.test(e))
    System.out.println(e);
                                     }
         }
class Employee{
   String name;
   double salary;
   int age;
   String department;
   Employee(String n, double s, int a, String d){
   name = n;
   salary = s;
   age = a;
   department = d;
              }
public String toString(){
   return " name = "+name+" salary = "+salary+" age = "+age+" department = "+department;
                        }
               }

Вывод: имя = C зарплата = 54000,0 возраст = 30 отдел = ECEadsa

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

В классе PrintStream метод println (Object x) использует String.valueOf (x), который вызывает toString () объекта. Если бы вы не переписали метод toString (), вы бы использовали реализацию класса Object по умолчанию.

0 голосов
/ 13 сентября 2018

Вы добавили код для печати Employee, Когда вы печатаете какой-либо объект, метод toString () вызывается для этого класса, если присутствует, иначе toString родительского элемента называется

  for(Employee e: hs)
    if (emp1.test(e))
    System.out.println(e);
              }
         }

Для сотрудника с Department.length ()> 5 логика печати System.out.println (e); называется

...