2016-05-13 1 views
1

Я выполнил мои собственные javafx.concurrent.Task, и я хочу, чтобы вызвать метод updateProgress за пределами своего объявления класса, но ошибка говорит: UpdateProgress (двойной, двойной) имеет защищенный доступ в ЗадачеUpdateProgress (двойной, двойной) имеет защищенный доступ в Задаче

Пример:

downloadTask.updateProgress(index,size); 

возможно ли это?

+3

Зачем вам это нужно? Тот факт, что он защищен, означает, что дизайнеры полагали, что он должен быть доступен только из задачи, что имеет смысл. Желая назвать это извне, вы можете делать что-то неправильно. Во всяком случае, вы всегда можете увеличить [видимость метода] (http://stackoverflow.com/questions/12780779/why-java-allows-increasing-the-visibility-of-protected-methods-in-child-class) , – Itai

ответ

0

Javadoc: https://docs.oracle.com/javafx/2/api/javafx/concurrent/Task.html

Фрагмент кода из документации:

public class IteratingTask extends Task<Integer> { 
     private final int totalIterations; 

     public IteratingTask(int totalIterations) { 
      this.totalIterations = totalIterations; 
     } 

     @Override protected Integer call() throws Exception { 
      int iterations = 0; 
      for (iterations = 0; iterations < totalIterations; iterations++) { 
       if (isCancelled()) { 
        updateMessage("Cancelled"); 
        break; 
       } 
       updateMessage("Iteration " + iterations); 
       updateProgress(iterations, totalIterations); 
      } 
      return iterations; 
     } 
    }