Make constructor private and class final

Suppress warnings on unchecked cast and documented expected usage of the
object array.
This commit is contained in:
aherbert 2022-10-13 14:19:15 +01:00
parent 83d9e3ab39
commit fed7dd881b
1 changed files with 12 additions and 5 deletions

View File

@ -29,7 +29,7 @@ import org.apache.commons.math4.legacy.linear.AnyMatrix;
*
* @since 4.0
*/
public class FieldDenseMatrix<T>
public final class FieldDenseMatrix<T>
implements AnyMatrix {
/** Field. */
private final Field<T> field;
@ -37,7 +37,13 @@ public class FieldDenseMatrix<T>
private final int rows;
/** Number of columns. */
private final int columns;
/** Data storage (in row-major order). */
/**
* Data storage (in row-major order).
*
* <p>Note: This is an Object[] that has been cast to T[] for convenience. It should not be
* exposed to avoid heap pollution. It is expected all entries stored in the array are
* instances of T.
*/
private final T[] data;
/**
@ -46,9 +52,10 @@ public class FieldDenseMatrix<T>
* @param c Number of columns.
* @throws IllegalArgumentException if {@code r <= 0} or {@code c <= 0}.
*/
protected FieldDenseMatrix(Field<T> f,
int r,
int c) {
@SuppressWarnings("unchecked")
private FieldDenseMatrix(Field<T> f,
int r,
int c) {
if (r <= 0 ||
c <= 0) {
throw new IllegalArgumentException("Negative size");