Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > вынести класс


Автор: stschurik 28.3.2007, 21:04
нужно класс Rss вынести из класса News в этот же пакет или другой, но чтобы нельзя было обращаться к методу Load вот так Rss.Load(); в классе Main. А вот так чтобы было можно обращаться News.Rss.Load(); в классе Main

Код

package javaapplication5;
import javaapplication5.test.*;

public class Main {
    
    public Main() {
    }
    
    public static void main(String[] args) {
        
        News.Rss.Load();
        
        
    }
    
}


и вот

Код

package javaapplication5.test;

public class News {
    
    public News()
    {
        
    }
    
    public final static class Rss
    {
        public static void Load()
        {
            System.out.println("5745");
        }
    }  
}


всем заранее спасибо.

Автор: nornad 28.3.2007, 21:54
Если тебе нужен именно способ работы через классы, а не через объекты, то вынести RSS не выйдет.
Статический вложенный класс обязан объявляться внутри класса, которому принадлежит. Не говоря уже о переносе в другие пакеты.
Если ты хотел вынести RSS из News для того, чтобы исходник был поменьше размером, то сделай так:
  • оставь структуру классов как сейчас
  • добавь ещё один класс в том же пакете, который будет иметь статичный метод Load() с правами доступа пакета (не пиши никакого слова - public, private или protected)
  • в RSS.Load() обращайся к RssLoader.Load()
не дам стопроцентную гарантию того, что в статичном классе можно иметь методы с правами доступа пакета, но попробуй. В крайнем случаеметод будет публичным.

Хм... пришло в голову, что в такой же схеме можно в News определить статичное поле RSS класса RssLoader, который реализует нестатичный метод Load() с правами доступа пакета. Думаю, это именно то, что тебе надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)