Как написать функцию, которая принимает несколько параметров, разделенных символом канала?

#java #android

#java #Android

Вопрос:

Например, в Android добавление флагов к намерению с помощью:

 Intent intent = new Intent(SOME_ACTION);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
 

Как будет выглядеть этот метод?

Комментарии:

1. Попробуйте использовать int

Ответ №1:

Символом канала является побитовый оператор включения ИЛИ. Оператор сравнивает значения (в двоичном формате) каждого операнда и выдает значение, битовый шаблон которого показывает, какие биты в любом из операндов имеют значение 1. Если оба бита равны 0, результат этого бита равен 0; в противном случае результат равен 1.

Код в вашем случае может выглядеть следующим образом:

 public class Intent {
  
  // define flag constants
  public static final int FLAG_ACTIVITY_NEW_TASK = 1; 
  public static final int FLAG_GRANT_READ_URI_PERMISSION = 2;
  
  private int flags;

  public void setFlags(int flags) {
    this.flags = flags;
  }
  
}

 

Впоследствии вы можете вызвать метод следующим образом:

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);

 

Вы можете узнать больше о побитовых операторах в официальной документации Java или посмотреть эти руководства:

Комментарии:

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