public <T, V> void addColumn(String name, Class<? extends V> type, 
        Function<T, V> getter, BiConsumer<T, V> setter)
    {
        Column column = new Column();
        column.name = Objects.requireNonNull(name, "The name may not be null");
        column.type = Objects.requireNonNull(type, "The type may not be null");
        column.getter = Objects.requireNonNull(
            getter, "The getter may not be null");
        column.setter = setter;
        columns.add(column);
        fireTableStructureChanged();
    }
public < T , V > void addColumn ( String name , Class < ? extends V > type , Function < T , V > getter , BiConsumer < T , V > setter ) { Column column = new Column ( ) ; column . name = Objects . requireNonNull ( name , "The name may not be null" ) ; column . type = Objects . requireNonNull ( type , "The type may not be null" ) ; column . getter = Objects . requireNonNull ( getter , "The getter may not be null" ) ; column . setter = setter ; columns . add ( column ) ; fireTableStructureChanged ( ) ; }
Add the specified column to this model

@param <T> The row type
@param <V> The value type

@param name The column name
@param type The column type
@param getter The getter for the column value
@param setter The optional setter for the column value