Как читать файл из ресурсов после развертывания на Elastic Beanstalk в Java? [Дубликат]

Идентичность - это не равенство.

  • равно оператору == тестового тождества.
  • equals(Object obj) метод сравнивает тест равенства (т.е. нам нужно сказать равенство, переопределяя метод)

Почему мне нужно переопределить методы equals и hashCode в Java?

Сначала мы должны понять использование метода equals.

Для того, чтобы идентифицировать различия между двумя объектами, нам нужно переопределить метод equals.

Например:

Customer customer1=new Customer("peter");
Customer customer2=customer1;
customer1.equals(customer2); // returns true by JVM. i.e. both are refering same Object
------------------------------
Customer customer1=new Customer("peter");
Customer customer2=new Customer("peter");
customer1.equals(customer2); //return false by JVM i.e. we have two different peter customers.

------------------------------
Now I have overriden Customer class equals method as follows:
 @Override
    public boolean equals(Object obj) {
        if (this == obj)   // it checks references
            return true;
        if (obj == null) // checks null
            return false;
        if (getClass() != obj.getClass()) // both object are instances of same class or not
            return false;
        Customer other = (Customer) obj;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name)) // it again using bulit in String object equals to identify the difference 
            return false;
        return true; 
    }
Customer customer1=new Customer("peter");
Customer customer2=new Customer("peter");
Insteady identify the Object equality by JVM, we can do it by overring equals method.
customer1.equals(customer2);  // returns true by our own logic

Теперь метод hashCode может легко понять.

hashCode создает целое число для хранения объекта в структурах данных, таких как HashMap, HashSet.

Предположим, что мы переопределим метод равенства Customer, как указано выше,

customer1.equals(customer2);  // returns true by our own logic

Во время работы с структурой данных, когда мы храним объект в ведрах (ведро - причудливое имя для папки) , Если мы используем встроенную хеш-технику, то для двух других клиентов она генерирует два разных хэш-кода. Таким образом, мы сохраняем один и тот же объект в двух разных местах. Чтобы избежать таких проблем, мы должны переопределить метод hashCode также на основе следующих принципов.

  • экземпляры un-equal могут иметь один и тот же хэш-код.
  • равные экземпляры должны возвращать одинаковый хэш-код.
1
задан dirtymikeandtheboys 10 June 2015 в 01:48
поделиться

1 ответ

Нет. java.io.File может использоваться только для отображения реальных каталогов.

Однако вы можете рассматривать его как java.nio.file.Path.

В целом у вас есть три варианта :

  1. Откройте .jar в качестве Zip File System и используйте Files.newDirectoryStream или Files.list .
  2. Итерируйте все записи в файле .jar, ища имена, которые соответствуют.
  3. Поместите текстовый файл в ваш .jar, который содержит имена всех записей в каталоге , поэтому вам не нужно пытаться их перечислить.
1
ответ дан VGR 23 August 2018 в 19:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: