Конечное статическое поле типа Integer [] можно изменить [duplicate]

$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

Вы определяете строку, используя одинарные кавычки, и PHP не анализирует строки с разделителями одиночной кавычки. Чтобы получить переменную интерполяцию, вам нужно использовать двойные кавычки или конкатенацию строк (или их комбинацию). См. http://php.net/manual/en/language.types.string.php для получения дополнительной информации.

Также вы должны проверить, что mysql_query вернул действительный ресурс результата, иначе fetch_ *, num_rows и т. д. не будут работать с результатом, поскольку это не результат! IE:

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

if( $result === FALSE ) {
   trigger_error('Query failed returning error: '. mysql_error(),E_USER_ERROR);
} else {
   while( $row = mysql_fetch_array($result) ) {
      echo $row['username'];
   }
}

http://us.php.net/manual/en/function.mysql-query.php для получения дополнительной информации.

5
задан Athanasios Valsamakis 14 October 2015 в 07:22
поделиться

6 ответов

, если final используется с объектами, вы не можете изменить ссылку на этот объект, но изменение значения отлично. Aray - это объект в java, и если вы хотите, чтобы значение объекта не изменялось, после его создания вам нужно будет сделать объект неизменным и примитивный массив нельзя сделать неизменным в java.

    final int [] finalArr={5,6,8};

     System.out.println("Value at index 0 is "+finalArr[0]);    
      //output : Value at index 0 is 5

      //perfectly fine
      finalArr[0]=41;

     System.out.println("Changed value at index 0 is "+finalArr[0]);
    //Changed value at index 0 is 41

     int[] anotherArr={7,9,6};
     // finalArr=anotherArr;
     //error : cannot assign a value to final variable finalArr

Подробнее о неизменяемом массиве вы можете обратиться к этим ссылкам:

Неизменяемый массив в Java

Есть ли способ сделать обычный массив неизменным в Java?

0
ответ дан Community 4 September 2018 в 10:17
поделиться

Если вы не хотите изменять значения, а также хотите получить доступ к членам коллекции, не требуя случайного доступа, очень простое решение вместо постоянного массива имеет окончательный неизменный список:

static final ImmutableList<Type> arrayOfConstants = ImmutableList.of(t1, t2, t3);
1
ответ дан Florin Grigoriu 4 September 2018 в 10:17
поделиться

-Если вы знаете значения до начала, инициализируйте значения массива и отметьте этот массив как final.

-Если вы не знаете значения изначально, тогда напишите общедоступные методы getter / seters и объявите массив как private. Записывать логику в методе setter, чтобы отменить изменения после выполнения определенного элемента (или выбросить исключение при нескольких изменениях одного и того же элемента)

0
ответ дан Mustafa sabir 4 September 2018 в 10:17
поделиться

Это время, когда этот пост открыт. Я удивлен, почему никто не думал о

public static final List<LanguageModel> GenderDataSource = new ArrayList<GenderModel>(){{
    add(new LanguageModel("0", "English"));
    add(new LanguageModel("1", "Hindi"));
    add(new LanguageModel("1", "Tamil"));
};};

, где LanguageModel просто содержит два свойства Id и Title или использует все, что ваш модельный класс общих Тип может быть.

Должен работать как постоянный.

- N Baua

0
ответ дан NBaua 4 September 2018 в 10:17
поделиться

Если вы хотите создать неизменяемый массив, нет, вы не можете. Все массивы в Java изменяемы.

Если вы просто хотите предопределить массив в своем классе, вы можете это сделать:

private static final int[] MY_ARRAY = {10, 20, 30, 40, 50};

Здесь мы создали предопределенный массив MY_ARRAY длины 5, поэтому MY_ARRAY[0] - 10 и т. д. Будьте осторожны, хотя даже если поле MY_ARRAY объявлено окончательным, это не означает, что элементы массива не могут быть изменены. Таким образом, лучше не публиковать этот массив публике с помощью модификатора public или protected.

5
ответ дан Tagir Valeev 4 September 2018 в 10:17
поделиться

Я имею в виду, что компоненты массива являются константами, т. е. [0] является постоянной переменной, такой как этот открытый статический окончательный int SIZE = 10;

Вы не можете указывать имена индексов массива.

Вы можете инициализировать массив, используя значения ранее существовавших констант:

public static final int SIZE = 10;

public static final int[] CONSTANTS = { SIZE };

Имейте в виду, что, хотя массив объявлен final, его значения могут все еще меняются. final только гарантирует, что вы не можете повторно назначить переменную массива, поэтому вы захотите инкапсулировать массив, чтобы предотвратить мутацию:

final class Constants {
    public static final int SIZE = 10;

    private static final int[] CONSTANTS = { SIZE };

    public static int getConstant(int index) {
       return CONSTANTS[index];
    }
}

Если вы хотите использовать цикл, я предлагаю вернуть глубокое копирование массива.

2
ответ дан Vince Emigh 4 September 2018 в 10:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: