Java Package Class Methods with Examples

The Package class in Java, part of the java.lang package, provides information about a Java package, such as its name, implementation title, version, and vendor. This class is useful for obtaining metadata about the packages in your Java application.

Here, we will explore the methods provided by the Package class and demonstrate their usage with examples.

Methods of the Package Class

1. getName()

Returns the name of the package.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            System.out.println("Package name: " + pkg.getName());
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Package name: java.lang

2. getImplementationTitle()

Returns the title of the implementation, or null if it is not available.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            System.out.println("Implementation title: " + pkg.getImplementationTitle());
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Implementation title: null

3. getImplementationVersion()

Returns the version of the implementation, or null if it is not available.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            System.out.println("Implementation version: " + pkg.getImplementationVersion());
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Implementation version: null

4. getImplementationVendor()

Returns the vendor of the implementation, or null if it is not available.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            System.out.println("Implementation vendor: " + pkg.getImplementationVendor());
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Implementation vendor: null

5. getSpecificationTitle()

Returns the title of the specification, or null if it is not available.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            System.out.println("Specification title: " + pkg.getSpecificationTitle());
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Specification title: null

6. getSpecificationVersion()

Returns the version of the specification, or null if it is not available.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            System.out.println("Specification version: " + pkg.getSpecificationVersion());
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Specification version: null

7. getSpecificationVendor()

Returns the vendor of the specification, or null if it is not available.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            System.out.println("Specification vendor: " + pkg.getSpecificationVendor());
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Specification vendor: null

8. isSealed()

Returns true if the package is sealed, otherwise false.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            System.out.println("Is package sealed: " + pkg.isSealed());
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Is package sealed: true

9. isSealed(URL url)

Returns true if the package is sealed with respect to the specified URL.

Example:

import java.net.URL;

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            try {
                URL url = new URL("file:/path/to/package");
                System.out.println("Is package sealed with respect to URL: " + pkg.isSealed(url));
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Is package sealed with respect to URL: false

10. getPackages()

Returns all the packages currently known to the class loader.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package[] packages = Package.getPackages();
        for (Package pkg : packages) {
            System.out.println("Package name: " + pkg.getName());
        }
    }
}

Output:

Package name: sun.util.cldr
Package name: java.util.regex
Package name: java.util.logging
Package name: java.util.concurrent.locks
Package name: sun.invoke.util
Package name: sun.net.www.protocol.file
Package name: sun.nio.ch
Package name: sun.launcher
Package name: java.math
Package name: java.lang.ref
Package name: sun.security.action
Package name: sun.util.spi
Package name: java.time.format
Package name: java.nio
Package name: sun.text.resources.cldr
Package name: java.lang.constant
Package name: java.lang.annotation
Package name: java.util.function
Package name: sun.net.www
Package name: java.nio.charset.spi
Package name: java.util.concurrent.atomic
Package name: sun.invoke.empty
Package name: sun.nio
Package name: sun.util.logging.internal
Package name: jdk.internal.vm.vector
Package name: sun.net.util
Package name: java.text
Package name: java.nio.charset
Package name: sun.util.resources.cldr
Package name: sun.net.www.protocol.jar
Package name: java.nio.file
Package name: java.util.zip
Package name: java.util.jar
Package name: jdk.internal.jmod
Package name: sun.text.spi
Package name: java.util.random
Package name: java.time
Package name: jdk.internal.logger
Package name: jdk.internal.module
Package name: java.time.chrono
Package name: java.lang
Package name: java.security.cert
Package name: sun.util.resources
Package name: sun.util.locale
Package name: sun.util.calendar
Package name: java.net
Package name: java.util.spi
Package name: java.time.temporal
Package name: java.lang.module
Package name: jdk.internal.util
Package name: jdk.internal.foreign.abi
Package name: java.util
Package name: jdk.internal.perf
Package name: jdk.internal.misc
Package name: java.nio.file.attribute
Package name: java.net.spi
Package name: jdk.internal.util.random
Package name: jdk.internal.reflect
Package name: jdk.internal.access
Package name: sun.nio.cs
Package name: jdk.internal.loader
Package name: sun.security.util
Package name: java.util.concurrent
Package name: sun.nio.fs
Package name: jdk.internal.org.objectweb.asm
Package name: java.nio.file.spi
Package name: jdk.internal.jimage.decompressor
Package name: java.text.spi
Package name: jdk.internal.vm
Package name: java.lang.reflect
Package name: jdk.internal.ref
Package name: java.lang.invoke
Package name: sun.util.logging
Package name: sun.reflect.annotation
Package name: java.io
Package name: java.security
Package name: jdk.internal.math
Package name: sun.util.locale.provider
Package name: java.time.zone
Package name: java.util.stream
Package name: jdk.internal.jimage
Package name:

11. isCompatibleWith(String desired) throws NumberFormatException

Returns true if this package is compatible with the specified version string.

Example:

public class PackageExample {
    public static void main(String[] args) {
        Package pkg = Package.getPackage("java.lang");
        if (pkg != null) {
            try {
                boolean isCompatible = pkg.isCompatibleWith("1.8");
                System.out.println("Is compatible with 1.8: " + isCompatible);
            } catch (NumberFormatException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("Package not found.");
        }
    }
}

Output:

Is compatible with 1.8: false

Conclusion

The Package class in Java provides methods to obtain metadata about packages, including their names, implementation details, and specifications. This class is useful for accessing information about the packages used in your Java application. By understanding and utilizing the methods provided by the Package class, you can effectively manage and retrieve package-related information in your Java programs.

Comments