Почему объявление нового конструктора в main скрывает поле?

Прошу помощи в ответе на вопрос: почему когда я в main создаю конструктор подкласса находящегося в другом файле (в этом же пакете), ругается компилятор о том, что не выделена память для объекта и данное действие прикрывает поле. Что я делаю не так? Пакет formfactor, классы FormFactor и Scan находятся в нем.

Stack trace выдает:

Exception in thread "main" java.lang.Error: Неразрешимая проблема компиляции: Невозможно разместить тип formfactor.Scan.ScanFile1 по его составному имени, квалифицированному вмещающим экземпляром. Имя типа элемента разрешается относительно типа квалифицирующего экземпляра

at formfactor.FormFactor.main(FormFactor.java:22)

    package formfactor;
    
    
    import formfactor.Scan;
    import formfactor.Scan.ScanFile1;
    public class FormFactor {
    
       static ScanFile sf;
        static formfactor.Scan.ScanFile1 search;
        private static Object x;
        public static void main(String[] args) {
            Panel panel = new Panel();
            panel.setVisible(true);
          ScanFile sf = new ScanFile();
         
  formfactor.Scan.ScanFile1 search = new formfactor.Scan.ScanFile1(); //Вот эта строка вызывает ошибку
            sf.start();
          search.start();
            Variables variables = new Variables();
           
            
        }
        
    }
         

Класс Scan:

package formfactor;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import static java.lang.Thread.sleep;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Noutbook
 */
public class Scan {


 
    

public class ScanFile1 extends Thread{

     String result1="00";
public void setResult(String result1) {
        this.result1 = result1;}
        
 public String getResult(){return result1;}
    
       
   
    @Override
    public void run()
    {
        for(int i = 0; i < 5; i++)
        {
            try{
                             
                sleep(5000);        
            }catch(InterruptedException e){}
                      
                        
            System.out.println("CUCAN!");   
                        
                        
                        try
{
BufferedReader iu = new BufferedReader (new FileReader ("lala.txt"));
String ki;
ki = iu.readLine();
iu.close();
                           String x = ki;
                           setResult(x); 
                          
System.out.println("x=" + x);
System.out.println("result = "+result1);


}
catch(FileNotFoundException fnfe)
{
                            
                            String x = "0";
}       catch (IOException ex) {
            Logger.getLogger(FormFactor.class.getName()).log(Level.SEVERE, null, ex);
        }
                        
                        
                 
                        
                        
        }
            
    }
 
}



    
}

Ответы (2 шт):

Автор решения: rhino_rus
Scan scan = new Scan();
Scan.ScanFile1 search = scan.new ScanFile1();
→ Ссылка
Автор решения: Vladimir Glinskikh

class FormFactor:

public class FormFactor {

static ScanFile sf;
static Scan.ScanFile1 search;
private static Object x;

public static void main(String[] args) {
    Panel panel = new Panel();
    panel.setVisible(true);
    ScanFile sf = new ScanFile();
    Scan.ScanFile1 search = new Scan.ScanFile1(); //Вот эта строка теперь не вызывает ошибку
    sf.start();
    search.start();
    }
  }

class Scan:

public class Scan {
static class ScanFile1 extends Thread {
    String result1 = "00";

    public void setResult(String result1) {
        this.result1 = result1;
    }

    public String getResult() {
        return result1;
    }

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            try {
                sleep(5000);
            } catch (InterruptedException e) {
            }

            System.out.println("CUCAN!");


            try {
                BufferedReader iu = new BufferedReader(new FileReader("lala.txt"));
                String ki;
                ki = iu.readLine();
                iu.close();
                String x = ki;
                setResult(x);

                System.out.println("x=" + x);
                System.out.println("result = " + result1);

            } catch (FileNotFoundException fnfe) {

                String x = "0";
            } catch (IOException ex) {
                Logger.getLogger(FormFactor.class.getName()).log(Level.SEVERE, null, ex);
            }
          }
        }
      }
    }
→ Ссылка