NetRunner: Java Mastery Guide 1.0 Help

Sealed Classes

Conceito Base

Sealed Classes controlam a hierarquia de herança, permitindo apenas classes específicas como subclasses.

permits

permits

permits

Sealed Class/Interface

Subclasse 1

Subclasse 2

Subclasse 3

Sintaxe Básica

public sealed interface CyberwareComponent permits NeuralImplant, BiometricEnhancer, CombatModule { void initialize(); int getPowerConsumption(); } public final class NeuralImplant implements CyberwareComponent { @Override public void initialize() { // Implementação } @Override public int getPowerConsumption() { return 50; } } public non-sealed class BiometricEnhancer implements CyberwareComponent { // Implementação } public sealed class CombatModule implements CyberwareComponent permits RangedModule, MeleeModule { // Implementação }

Modificadores de Permissão

final

public sealed class SecurityProtocol permits BiometricAuth, TokenAuth { // Base implementation } public final class BiometricAuth extends SecurityProtocol { // Não pode ser estendida }

non-sealed

public sealed interface DataProcessor permits StreamProcessor, BatchProcessor { void process(byte[] data); } public non-sealed class StreamProcessor implements DataProcessor { // Pode ser estendida por qualquer classe }

sealed

public sealed interface NetworkNode permits Router, Switch, Firewall { void connect(); void disconnect(); } public sealed class Router implements NetworkNode permits CoreRouter, EdgeRouter { // Implementação }

Pattern Matching

public String analyzeComponent(CyberwareComponent component) { return switch (component) { case NeuralImplant n -> "Neural Implant: Power=" + n.getPowerConsumption(); case BiometricEnhancer b -> "Biometric: Power=" + b.getPowerConsumption(); case CombatModule c -> "Combat: Power=" + c.getPowerConsumption(); }; }

Casos de Uso

Hierarquia de Comandos

public sealed interface Command permits QueryCommand, UpdateCommand, DeleteCommand { void execute(); } public final class QueryCommand implements Command { private final String query; @Override public void execute() { // Implementação } }

Sistema de Plugins

public sealed interface Plugin permits SecurityPlugin, NetworkPlugin, DataPlugin { void load(); void unload(); String getVersion(); }

Boas Práticas

  1. Hierarquia Clara

    • Defina hierarquias explícitas

    • Limite extensibilidade apropriadamente

    • Documente o propósito de cada permissão

  2. Escolha de Modificadores

    • Use final para folhas da hierarquia

    • Use non-sealed para pontos de extensão

    • Use sealed para controle intermediário

  3. Pattern Matching

    • Aproveite o pattern matching exaustivo

    • Combine com records quando apropriado

    • Mantenha switches concisos

Exercícios Práticos

// 1. Sistema de Protocolos de Rede public sealed interface NetworkProtocol permits TCP, UDP, ICMP { void sendPacket(byte[] data); void receivePacket(); } // 2. Hierarquia de Eventos public sealed class SystemEvent permits UserEvent, NetworkEvent, SecurityEvent { private final LocalDateTime timestamp; // Implementação } // 3. Framework de Processamento public sealed interface DataProcessor permits RealTimeProcessor, BatchProcessor { void process(List<byte[]> data); ProcessingStats getStats(); }

Próximos Passos

Projetos OOP

26 June 2025