Java класс с переменной-членом типа Object - PullRequest
0 голосов
/ 07 мая 2020

Не одобряется ли хранить общий c Object класс внутри класса в качестве переменной-члена? У меня есть вариант использования, когда у меня есть класс Java со следующими переменными-членами:

public class Request {
     private String id;
     private Object payload;
}

Полезная нагрузка должна содержать много разных типов объектов. В этом примере я просто покажу два.

public class Entity {
     private String entityId;
     private String name;
}

public class User {
     private String uid;
     private String firstname; 
     private String lastname;
}

В конечном итоге мне нужно создать список Request объектов List<Request>, которые могут поддерживать внутреннее хранение общих c объектов полезной нагрузки. Использование Java generi c T для переменной-члена payload в классе Request не кажется хорошим подходом, потому что мне нужно иметь возможность создать список из Request объектов, содержащих много различные типы объектов внутренней полезной нагрузки. Как лучше всего справиться с этим в Java?

1 Ответ

0 голосов
/ 07 мая 2020

Я думаю, что в этом случае все же лучше использовать дженерики, а не Object. Поскольку вам нужно будет хранить много разных Request объектов, которые могут содержать разные типы полезных данных, просто создайте суперкласс (или интерфейс), от которого наследуются все ваши классы полезной нагрузки, чтобы вы могли создать свой список как что-то вроде List<Request<Payload>> где каждый класс (например, Entity и User) наследуется от этого Payload суперкласса. Это, по крайней мере, дает вам дополнительное преимущество, заключающееся в том, что ваш объект Request не может содержать только любые Object в качестве полезной нагрузки, а скорее является экземпляром класса Payload

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...