Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Replace the nullable annotations with guava's Optional class.

Open
#9 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Stale
Tech stack
java
Domain
cli

Research direction

Start with com.sk89q.intake.argument.Namespace and review its get(Object) and get(Class) methods alongside the linked Guava Optional documentation. Search the project for nullable annotations and determine which APIs need replacement; done means the nullable annotations are replaced consistently with Optional usage and the affected behavior remains covered by the existing tests.

Written by the indexing model from the issue text.

Description

What's the point of Guava's Optional class?

Probably the single biggest disadvantage of null is that it's not obvious what it should mean in any given context: it doesn't have an illustrative name. It's not always obvious that null means "no value for this parameter" -- heck, as a return value, sometimes it means "error", or even "success" (!!), or simply "the correct answer is nothing". Optional is frequently the concept you actually mean when you make a variable nullable, but not always.

more: http://stackoverflow.com/questions/9561295/whats-the-point-of-guavas-optional-class

Optional class: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Optional.html

Example in com.sk89q.intake.argument.Namespace

    /**
     * Returns the value specified by the given key.
     *
     * @param key The key
     * @return The value, which may be null, including when the key doesn't exist
     */
    public Optional<Object> get(Object key) {
        if (!locals.containsKey(key)) Optional.absent();
        return Optional.of(locals.get(key));
    }

    /**
     * Get an object whose key will be the object's class.
     *
     * @param key The key
     * @param <T> The type of object
     * @return The value
     */
    @SuppressWarnings("unchecked")
    public <T> Optional<T> get(Class<T> key) {
        if (!locals.containsKey(key)) Optional.absent();
        return Optional.of((T)locals.get(key));
    }
Dominant language
Java
Stars
102
Forks
18
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from EngineHub/Intake

All issues in EngineHub/Intake

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.