Если у вас есть метод Node, который должен принимать агента, вы указываете, что аргумент должен быть агентом.
interface Node {
void method(Agent agent); // must be an Agent.
Agent returnAgent(); // must return an Agent.
}
Сериализация - это особый случай. Это связано с тем, что не все типы, которые являются сериализуемыми, являются сериализуемыми. Встроенные типы, такие как int [], сериализуемы, но не реализуют Serializable. Этот тип проверки не может быть выполнен компилятором и может быть выполнен только во время выполнения.