This Java program is to Implement Attributes API.The Attributes class maps Manifest attribute names to associated string values. Valid attribute names are case-insensitive, are restricted to the ASCII characters in the set [0-9a-zA-Z_-], and cannot exceed 70 characters in length. Attribute values can contain any characters and will be UTF8-encoded when written to the output stream.
Here is the source code of the Java program to Implement Attributes API. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.jar.Attributes; public class AttributesImpl { private Attributes attributes; /** Constructs a new, empty Attributes object with default size. **/ public AttributesImpl() { attributes = new Attributes(); } /** * Constructs a new Attributes object with the same attribute name-value * mappings as in the specified Attributes. **/ public AttributesImpl(Attributes attr) { attributes = new Attributes(attr); } /** * Constructs a new, empty Attributes object with the specified initial * size. **/ public AttributesImpl(int size) { attributes = new Attributes(size); } /** Removes all attributes from this Map. **/ public void clear() { attributes.clear(); } /** Returns a copy of the Attributes **/ public Object clone() { return attributes.clone(); } /** Returns true if this Map contains the specified attribute name (key). **/ public boolean containsKey(Object key) { return attributes.containsKey(key); } /** * Returns true if this Map maps one or more attribute names (keys) to the * specified value. **/ public boolean containsValue(Object value) { return attributes.containsValue(value); } /** * Returns a Collection view of the attribute name-value mappings contained * in this Map. **/ public Set<Map.Entry<Object, Object>> entrySet() { return attributes.entrySet(); } /** * Returns the value of the specified attribute name, or null if the * attribute name was not found. **/ public Object get(Object key) { return attributes.get(key); } /** * Returns the value of the specified Attributes.Name, or null if the * attribute was not found. **/ public String getValue(Attributes.Name name) { return attributes.getValue(name); } /** * Returns the value of the specified attribute name, specified as a string, * or null if the attribute was not found. **/ public String getValue(String name) { return attributes.getValue(name); } /** Returns true if this Map contains no attributes. **/ public boolean isEmpty() { return attributes.isEmpty(); } /** Returns a Set view of the attribute names (keys) contained in this Map. **/ public Set<Object> keySet() { return attributes.keySet(); } /** * Associates the specified value with the specified attribute name (key) in * this Map. **/ public Object put(Object key, Object value) { return attributes.put(key, value); } /** * Copies all of the attribute name-value mappings from the specified * Attributes to this Map. **/ public void putAll(Map<?, ?> m) { attributes.putAll(m); } /** * Associates the specified value with the specified attribute name, * specified as a String. **/ public String putValue(String name, String value) { return attributes.putValue(name, value); } /** Removes the attribute with the specified name (key) from this Map **/ public Object remove(Object key) { return attributes.remove(key); } /** Returns the number of attributes in this Map. **/ public int size() { return attributes.size(); } /** Returns a Collection view of the attribute values contained in this Map. **/ public Collection<Object> values() { return attributes.values(); } public static void main(String... arg) { Attributes.Name CLASS_PATH = new Attributes.Name("CLASS_PATH"); Attributes.Name CONTENT_TYPE = new Attributes.Name("CONTENT_TYPE"); Attributes.Name MANIFEST_VERSION = new Attributes.Name("MANIFEST_VERSION"); AttributesImpl attribute = new AttributesImpl(); attribute.put(CLASS_PATH, "root/sub_dir/class_path"); attribute.put(CONTENT_TYPE, "UTF-8"); attribute.put(MANIFEST_VERSION, "2"); attribute.putValue("MAIN_CLASS", "TESTMAIN.java"); System.out.println("the key set of the Attributes is "); Set<Object> keySet = attribute.keySet(); Iterator<Object> itr = keySet.iterator(); while (itr.hasNext()) { System.out.print(itr.next() + "\t"); } System.out.println(); System.out.println("the values of the Attributes is "); Collection<Object> collectionValues = attribute.values(); itr = collectionValues.iterator(); while (itr.hasNext()) { System.out.print(itr.next() + "\t"); } System.out.println(); System.out.println("the entry set of the Attributes is "); Iterator<Entry<Object, Object>> eitr; Set<Entry<Object, Object>> entrySet = attribute.entrySet(); eitr = entrySet.iterator(); while (eitr.hasNext()) { System.out.println(eitr.next() + "\t"); } System.out.println("the Attributes contains Key CLASS_PATH:" + attribute.containsKey(CLASS_PATH)); System.out.println("the Attributes contains Value TESTMAIN.java :" + attribute.containsValue("TESTMAIN.java")); System.out.println("the size of the Attributes is " + attribute.size()); attribute.clear(); if (attribute.isEmpty()) System.out.println("the Attributes is empty"); else System.out.println("the Attributes is not empty"); } }
$ javac AttributesImpl.java $ java AttributesImpl the key set of the Attributes is MAIN_CLASS MANIFEST_VERSION CONTENT_TYPE CLASS_PATH the values of the Attributes is TESTMAIN.java 2 UTF-8 root/sub_dir/class_path the entry set of the Attributes is MAIN_CLASS=TESTMAIN.java MANIFEST_VERSION=2 CONTENT_TYPE=UTF-8 CLASS_PATH=root/sub_dir/class_path the Attributes contains Key CLASS_PATH:true the Attributes contains Value TESTMAIN.java :true the size of the Attributes is 4 the Attributes is empty
Related posts:
Lớp Collections trong Java (Collections Utility Class)
Java Program to Implement Depth-limited Search
So sánh ArrayList và Vector trong Java
Introduction to Spring Cloud Netflix – Eureka
Java Program to Find Strongly Connected Components in Graphs
A Guide to Java SynchronousQueue
Java Program to Implement Bellman-Ford Algorithm
Properties with Spring and Spring Boot
Java Program to Perform Sorting Using B-Tree
Java Program to Implement Interpolation Search Algorithm
Java Program to Find the Median of two Sorted Arrays using Binary Search Approach
Exploring the Spring 5 WebFlux URL Matching
Java Program to Search for an Element in a Binary Search Tree
HTTP Authentification and CGI/Servlet
Hướng dẫn sử dụng Lớp FilePermission trong java
Java program to Implement Tree Set
How to Remove the Last Character of a String?
Java Program to Implement Cubic convergence 1/pi Algorithm
Converting String to Stream of chars
Java Program to Implement Ternary Search Algorithm
CyclicBarrier in Java
Hướng dẫn Java Design Pattern – Adapter
Working With Maps Using Streams
Java Program to Implement TreeSet API
Converting a Stack Trace to a String in Java
Introduction to Spring Cloud CLI
Luồng Daemon (Daemon Thread) trong Java
Converting between an Array and a List in Java
Java Program to Implement Tarjan Algorithm
Custom HTTP Header with the HttpClient
Java Program to Solve Set Cover Problem assuming at max 2 Elements in a Subset
Java Program to Implement Efficient O(log n) Fibonacci generator