Agent Skills: Java Fundamentals Skill

Master core Java programming - syntax, OOP, collections, streams, and exception handling

javaobject-oriented-programmingcollectionsstreamsexception-handling
developmentID: pluginagentmarketplace/custom-plugin-java/java-fundamentals

Skill Files

Browse the full folder contents for java-fundamentals.

Download Skill

Loading file tree…

skills/java-fundamentals/SKILL.md

Skill Metadata

Name
java-fundamentals
Description
Master core Java programming - syntax, OOP, collections, streams, and exception handling

Java Fundamentals Skill

Master core Java programming with production-quality patterns.

Overview

This skill covers Java fundamentals including syntax, OOP, collections, streams API, and exception handling for Java 8-21.

When to Use This Skill

Use when you need to:

  • Write clean, idiomatic Java code
  • Design classes following OOP principles
  • Choose appropriate collection types
  • Implement functional programming patterns
  • Handle exceptions properly

Topics Covered

Core Syntax (Java 8-21)

  • Variables, data types, operators
  • Control flow, methods, classes
  • Records (Java 16+), sealed classes (Java 17+)
  • Pattern matching (Java 21)

Object-Oriented Programming

  • Classes, inheritance, polymorphism
  • Interfaces and abstract classes
  • SOLID principles

Collections Framework

  • List: ArrayList, LinkedList
  • Set: HashSet, TreeSet
  • Map: HashMap, ConcurrentHashMap
  • Queue: ArrayDeque, PriorityQueue

Streams API

  • filter, map, flatMap, reduce, collect
  • Optional handling
  • Parallel streams

Exception Handling

  • Checked vs unchecked exceptions
  • Try-with-resources
  • Custom exceptions

Quick Reference

// Record (Java 16+)
public record User(String name, String email) {}

// Pattern matching (Java 21)
String format(Object obj) {
    return switch (obj) {
        case Integer i -> "Int: %d".formatted(i);
        case String s -> "String: %s".formatted(s);
        default -> obj.toString();
    };
}

// Stream operations
List<String> names = users.stream()
    .filter(User::isActive)
    .map(User::getName)
    .sorted()
    .toList();

// Optional handling
String name = Optional.ofNullable(user)
    .map(User::getName)
    .orElse("Unknown");

Collection Selection

| Need | Use | Reason | |------|-----|--------| | Indexed access | ArrayList | O(1) random access | | Unique elements | HashSet | O(1) contains | | Sorted unique | TreeSet | O(log n) sorted | | Key-value pairs | HashMap | O(1) get/put |

Troubleshooting

| Problem | Cause | Solution | |---------|-------|----------| | NullPointerException | Null reference | Use Optional | | ConcurrentModificationException | Modify during iteration | Iterator.remove() | | ClassCastException | Wrong type | Use generics |

Usage

Skill("java-fundamentals")