Доступ к методу другого класса в том же пакете невозможен - PullRequest
0 голосов
/ 15 апреля 2019

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

Я уже попробовал следующую функциональность intellij без успеха.

"Файл"> "Неверный кэш / перезапуск"> "Неверный и перезапуск"

Метод:

package de.elektriker_lifestyle.reducedcoffee;

import java.util.List;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import com.opencsv.*;

public class csvReader {

    private static final char SEPARATOR = ',';

    public static void updateCSV(String input, String output, String  replace, int row, int col) throws IOException {

        CSVReader reader = new CSVReader(new FileReader(input),SEPARATOR);
        List<String[]> csvBody = reader.readAll();
        csvBody.get(row)[col]=replace;
        reader.close();

        CSVWriter writer = new CSVWriter(new FileWriter(output),SEPARATOR,' ');
        writer.writeAll(csvBody);
        writer.flush();
        writer.close();
    }



}

Здесь я хочу использовать метод:

package de.elektriker_lifestyle.reducedcoffee;
public class test {
    csvReader.updateCSV(...);
}

Скриншоты:

Появляется следующая ошибка: «Не удается разрешить символ« updateCSV »».

Ответы [ 4 ]

1 голос
/ 15 апреля 2019

Этот код не является допустимым Java, вы не можете вызывать метод из тела класса, вызов метода должен быть частью какого-либо инициализатора (такого как инициализатор статического поля или статический блок) или метода.

public class test {
    csvReader.updateCSV(...);
}
0 голосов
/ 15 апреля 2019

Как указано в предыдущем ответе, вы не можете вызывать метод в теле класса, все выполнения метода должны быть внутри другого метода, который распространяется до основного метода.

Также в выполняемом вами вызове отсутствуют некоторые параметры объявления вашего метода.

Наконец, если вы хотите, чтобы ваш статический метод всегда выполнялся в вашем классе, вы должны сделать это в конструкторе класса:

public class test {

   public test () {
    csvReader.updateCSV(...);
   }
}

` Таким образом, каждый раз при создании тестового объекта будет выполняться ваш статический метод.

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

Вам необходимо вызвать статический метод csvReader.updateCSV со всеми необходимыми аргументами:

csvReader.updateCSV("1", "2", "3", 4, 5);

Используйте приведенный ниже код в качестве руководства:

import java.util.List;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import au.com.bytecode.opencsv.CSVReader;
import au.com.bytecode.opencsv.CSVWriter;

public class csvReader {

    private static final char SEPARATOR = ',';

    public static void updateCSV(String input, String output, String  replace, int row, int col) throws IOException {

        CSVReader reader = new CSVReader(new FileReader(input),SEPARATOR);
        List<String[]> csvBody = reader.readAll();
        csvBody.get(row)[col]=replace;
        reader.close();

        CSVWriter writer = new CSVWriter(new FileWriter(output),SEPARATOR,' ');
        writer.writeAll(csvBody);
        writer.flush();
        writer.close();
    }

    public static void main(String[] args) throws IOException {
            csvReader.updateCSV("1", "2", "3", 4, 5);

    }

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

import de.elektriker_lifestyle.reducedcoffee.csvReader.java в тестовом классе над общедоступным классом test {}

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