Java Reflection - многомерный класс с плавающей точкой - PullRequest
0 голосов
/ 30 июня 2010

Приведенный ниже фрагмент кода вызывает это предупреждение в NetBeans 6.9.

[rawtypes] found raw type: org.openide.nodes.PropertySupport.Reflection
  missing type parameters for generic class org.openide.nodes.PropertySupport.Reflection<T>
Property dataProp = new PropertySupport.Reflection(t, dataStore.getFloat3DClass(),
                        workingData);

/**
 * Gets the Class object associated with the primitive 3d float array (i.e., float[][][]).
 *
 * @return  the Class object.
 */
public Class<?> getFloat3DClass()
{
    if (class3DFloat == null)
    {
       try
       {
           class3DFloat = Class.forName("[[[F");
       }
       catch (ClassNotFoundException ex)
       {
           Exceptions.printStackTrace(ex);
       }
    }

    return class3DFloat;
}

Во время выполнения getFloat3DClass() возвращает объект Class, значение которого равно class float[][][]. Как мне указать это во время разработки и избежать этого предупреждения?

Ответы [ 2 ]

2 голосов
/ 30 июня 2010

Вам необходимо указать параметр типа для Property и PropertySupport.Вы можете использовать <?> или <float[][][]>.Если вы сделаете последнее, будет неизбежный неконтролируемый бросок результата из Class.forName:

Property<float[][][]> dataProp =
    new PropertySupport<float[][][]>.Reflection(t, dataStore.getFloat3DClass(),
                                                workingData);

...

public Class<float[][][]> getFloat3DClass() {
    ...
    if (class3DFloat == null)
    {
        try
        {
            @SuppressWarnings("unchecked")
            Class<float[][][]> tmp = (Class<float[][][]>)Class.forName("[[[F");
            class3DFloat = tmp;
        }
1 голос
/ 30 июня 2010

Ты слишком много работаешь.Не используйте dataStore.getFloat3DClass(), когда вы делаете PropertySupport.Reflection, используйте float[][][].class, и оно будет работать.И значение будет кэшировано для вас тоже во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...