Если ваш код компилируется, тогда pb
является параметром для Thread
конструктора.
Учитывая, что это одиночный параметр, он может быть либо Runnable , либо String , поскольку Java ME API определяет только эти объекты, возможные как один параметр в Конструктор потока.
Как будет выглядеть этот код, если я изменю новую тему (pb) на новую тему ()?
Если pb равен Runnable
, то, скорее всего, ничего не изменится, потому что экземпляр Thread aaa
переопределяет метод run (который в противном случае вызывался бы для pb), а также потому, что в вашем фрагменте кода нет никаких следов вызова pb.run
в любом случае (который пахнет ошибкой проекта или слишком большим количеством кода, вырезанного из вашего фрагмента).
Если pb равно String
, то по умолчанию вместо значения pb будет использоваться имя потока aaa
.
Влияет ли это на val $ pb?
Трудно сказать, если вы не отправите больше кода - желательно в SSCCE форме.
val$pb
выглядит забавно, но это может быть допустимый идентификатор для переменной, если предположить, что во фрагменте кода вы вырезали что-то, что инициализирует его.
обновить во второй версии вашего кода, учитывая, что вы инициализировали private final ProgressBar val=null
- в результате операторы метода run, которые вызывают методы для него, сгенерируют NPE this.val.getValue()
и перейдут прямо в блок catch, который рисует домашний экран в соответствии с комментариями кода.
Update2
если я не инициализирую private final ProgressBar val
, тогда выдается ошибка как variable val might not have been initialized
, что может быть другим способом инициализации?
Ну, с ограниченным количеством кода в вашем фрагменте, можно только догадываться.
Один из способов, который приходит на ум, - это инициализация с pb
, например:
//...
new Thread(pb) { private final ProgressBar val$pb = pb; // ...
выше может скомпилироваться, если pb ссылается на экземпляр ProgressBar и объявлен как final.
Обратите внимание, что в этом случае val$pb
не совсем необходим, поскольку вместо него можно использовать pb
(возможно, эта переменная была введена для предпочтений стиля кода).
Кроме того, учитывая вашу ссылку на j4me, я должен признать, что использование ProgressBar в конструкторе потоков - если pb является экземпляром этого класса - имеет для меня очень мало смысла. Можно только удивляться, как это появилось в исходном фрагменте, который вы разместили Thread aaa = new Thread(pb)...