/**
   * If the item at pos is a Number, return its long value. Otherwise if the item is a char[] or any
   * other type of Object, convert the item to a String and return its long value.
   *
   * @param row the row number
   * @return the long value of the item at row # row. If no such value exists returns a value
   *     signifying the position is empty, as defined by SparseLongColumn.
   */
  public long getLong(int row) {
    Object obj = elements.get(row);
    if (obj != null && isDataNumeric(row)) {
      return SparseLongColumn.toLong(obj);
    }

    return (long) SparseDefaultValues.getDefaultInt();
  }
  /**
   * If the item at pos is a Number, return its short value. Otherwise if the item is a char[] or
   * any other type of Object, convert the item to a String and return its short value.
   *
   * @param row the row number
   * @return the short value of the item at row number row. If no such value exists returns a value
   *     signifying the position is empty, as defined by SparseShortColumn.
   */
  public short getShort(int row) {
    Object obj = elements.get(row);
    if (obj != null && isDataNumeric(row)) {
      return SparseShortColumn.toShort(obj);
    }

    return (short) SparseDefaultValues.getDefaultInt();
  }
  /**
   * If the item at pos is a Number, return its int value. Otherwise if the item is a char[] or any
   * other type of Object, convert the item to a String and return its int value.
   *
   * @param row the row number
   * @return the int value of the item at row # row. If no such value exists returns a value
   *     signifying the position is empty, as defined by SparseIntColumn.
   */
  public int getInt(int row) {
    Object obj = elements.get(row);
    if (obj != null && isDataNumeric(row)) {
      return SparseIntColumn.toInt(obj);
    }

    return SparseDefaultValues.getDefaultInt();
  }