Порядок операций с помощью Объектного Синтаксиса Инициализатора

Быстрый и простой способ:

1- открыть MainActivity.java или любой доступный java-файл.

В верхней части есть объявление пакета, например:

< blockquote>

package com. example .myapp;

выберите часть пакета, которую вы хотите изменить, и нажмите Shift + F6. Я лично хочу изменить example.

В диалоговом окне предупреждения выберите «Переименовать пакет», а затем вставьте нужное имя пакета.

2- Откройте AndroidManifest.xml и внутри <manifest> измените значение package на нужное имя пакета.

3- открыть build.gradle(Module: app) и изменить applicationId на нужный пакет.

28
задан Micah 30 January 2009 в 14:14
поделиться

1 ответ

Да.

Извинения за то, что были прерваны (я должен на самом деле сделать некоторую работу время от времени). Спецификация не делает явно , говорит она, но она делает это довольно ясным IMO в разделе 7.6.10.2:

<час>

объектный инициализатор состоит из последовательности членских инициализаторов, включенных {и} маркеры и разделенный запятыми.

(Отмечают слово "последовательность" здесь, вместо того, чтобы "установить". Я лично думаю, что это значительно, поскольку последовательность заказана.)

следующий класс представляет точку с двумя координатами:

public class Point
{
    int x, y;
    public int X { get { return x; } set { x = value; } }
    public int Y { get { return y; } set { y = value; } }
}

экземпляр Точки может быть создан и инициализирован следующим образом:

Point a = new Point { X = 0, Y = 1 };

, который имеет тот же эффект как [1 117]

Point __a = new Point();
__a.X = 0;
__a.Y = 1; 
Point a = __a;

где __ в других отношениях невидимой и недоступной временной переменной.

<час>

РЕДАКТИРОВАНИЕ: у меня был ответ от Mads Torgersen, который в основном сказал, что что-либо, что может быть сделано теперь, сохранит порядок. Могут быть некоторые причуды в будущем, где порядок не сохраняется в странных случаях, где Вы делаете что-то другой , чем установка свойства/поля, но это будет зависеть от того, куда язык идет.

стоит указать, что существует на самом деле много шагов, продолжающихся здесь - существует порядок выполнения оценки аргументов (т.е. биты RHS) и порядок выполнения присвоений. Например, если Вы имеете:

new Foo
{
    A = X,
    B = Y
}

все выполняющие приказы возможны, все еще поддерживая порядок фактического выполнения свойства (A и B):

  • Оценивают X, присваиваются к A, оценивают Y, присваивают B
  • , Оценивают X, оценивают Y, присваиваются к A, присваивают B
  • , Оценивают Y, оценивают X, присваиваются к A, присваивают B

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

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

45
ответ дан Jon Skeet 14 October 2019 в 11:15
поделиться
Другие вопросы по тегам:

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