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