Description
What is the benefit of having so many classes implement the getCOSDIctionary() method on their own?
Why not have one class providing this functionality?
public class PDDictionaryWrapper implements COSObjectable
{
private final COSDictionary dictionary;
/**
- Default constructor
*/
public PDDictionaryWrapper() { this.dictionary = new COSDictionary(); }
/**
*
- @param dictionary the dictionary
*/
public PDDictionaryWrapper(COSDictionary dictionary) { this.dictionary = dictionary; }
public COSBase getCOSObject()
{ return this.dictionary; }/**
* Returns the dictionary.
*
* @return the dictionary
*/
protected COSDictionary getCOSDictionary()
{ return this.dictionary; }
@Override
public boolean equals(Object obj)
{
if (this == obj)
if (obj instanceof PDDictionaryWrapper)
{ return this.dictionary.equals(((PDDictionaryWrapper) obj).dictionary); } return false;
}
@Override
public int hashCode()
}
and for objects with a required Type:
public class PDTypedDictionaryWrapper extends PDDictionaryWrapper
{
/**
*
- @param type the type
*/
public PDTypedDictionaryWrapper(String type) { super(); this.getCOSDictionary().setName(COSName.TYPE, type); }
/**
*
- @param dictionary the dictionary
*/
public PDTypedDictionaryWrapper(COSDictionary dictionary) { super(dictionary); }
/**
- Returns the type.
* - @return the type
*/
public String getType() { return this.getCOSDictionary().getNameAsString(COSName.TYPE); }
}