Ошибка несовместимых типов при копировании кода - PullRequest
0 голосов
/ 01 апреля 2019

Я настраиваю регистратор в программе, но использовал некоторый код из другой программы.Я мог бы исправить все ошибки, кроме ошибки несовместимого типа, возвращаемой Collectors.toList ().

Ошибка: https://i.imgur.com/ak5pCEb.png

Возвращаемое значение: https://i.imgur.com/Ox6aCjw.png

Мне нужен возвращаемый результат: https://i.imgur.com/JlLNPvz.png

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

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

private static class LogcatAdapter extends BaseAdapter {

        private List<String> mLines = Collections.emptyList();

        void reload() {
            try {
                Process process = Runtime.getRuntime().exec("logcat -d -t 500 -v time");
                BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                mLines = reader.lines().collect(Collectors.toList());
            } catch (IOException e) {
                StringWriter str = new StringWriter();
                e.printStackTrace(new PrintWriter(str));
                mLines = Collections.singletonList(str.toString());
            }
            notifyDataSetChanged();
        }

        @Override
        public String toString() {
            return BuildConfig.APPLICATION_ID + " " + BuildConfig.VERSION_NAME + "\n" +
                   mLines.stream().collect(Collectors.joining("\n"));
        }

        @Override
        public int getCount() {
            return mLines.size();
        }

        @Override
        public String getItem(int position) {
            return mLines.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View view, ViewGroup parent) {
            if (view == null) {
                view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.item_logline, parent, false);
            }
            String line = getItem(position);
            ((TextView) view.findViewById(R.id.text)).setText(line);
            return view;
        }

    }

1 Ответ

0 голосов
/ 01 апреля 2019

Вы можете указать T вызова toList "от руки":

mLines = reader.lines().collect(Collectors.<String>toList());

Но , что не должно быть необходимым.Это кажется ошибкой в ​​IntelliJ, код на самом деле компилируется и работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...