1f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk/** 2f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * Copyright (C) 2017 The Android Open Source Project 3f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * 4f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * Licensed under the Apache License, Version 2.0 (the "License"); 5f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * you may not use this file except in compliance with the License. 6f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * You may obtain a copy of the License at 7f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * 8f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * http://www.apache.org/licenses/LICENSE-2.0 9f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * 10f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * Unless required by applicable law or agreed to in writing, software 11f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * distributed under the License is distributed on an "AS IS" BASIS, 12f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * See the License for the specific language governing permissions and 14f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * limitations under the License. 15f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk */ 16f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk 17f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczykpackage com.android.server.broadcastradio.hal2; 18f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk 19f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk/** 20f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * A wrapper class for mutable objects to be used in non-mutable contexts 21f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * (i.e. final variables catched in lambda closures). 22f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * 23f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * @param <E> type of boxed value. 24f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk */ 25f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczykfinal class Mutable<E> { 26f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk /** 27f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * A mutable value. 28f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk */ 29f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk public E value; 30f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk 31f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk /** 32f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * Initialize value with null pointer. 33f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk */ 34f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk public Mutable() { 35f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk value = null; 36f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk } 37f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk 38f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk /** 39f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * Initialize value with specific value. 40f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * 41f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk * @param value initial value. 42f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk */ 43f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk public Mutable(E value) { 44f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk this.value = value; 45f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk } 46f58305d137f07071238239dfa0a144cfefc2831cTomasz Wasilczyk} 47