Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать общии константы для двух проектов 
V
    Опции темы
Ak47black
  Дата 11.3.2010, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Здравствуйте.
Хочу сделать сделать что-бы некие функции и константы были доступны в основных классах двух проектов. (делаю программу Client-Server)
Пытаюсь сделать так
Код

interface Constants
{
    final int BUFFLEN = 1024;

    final int GET_FILE_LIST = 0;
    final int SEND_FILE_LIST = 1;
    final int SEND_FILE_LIST = 1;
    final int SEND_FILE_INFO = 2;
    final int GET_FILE_DATA = 3;
    final int SEND_FILE_DATA = 4;
    final int SEND_END = 5;
    final int GET_FILE_SIZE = 6;
    final int SEND_FILE_SIZE = 7;
    
    void test1()
    {
        
    }
}

а дальше низнаю как правильно объявить.
Например я этот файл сохраняю куда-нибудь. Тогда когда его объявить в двух классах разных проектах?
Тоесть сделать константы и функции видимыми в обоих случаях из одного источника?
PM MAIL   Вверх
dobrolub
Дата 11.3.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



Код

public interface Constants {
  public final int TIMEOUT = 0;
}

public class Client implements Constants {
  public void run() {
    while (something < TIMEOUT)
    {}
  }
}

public class Server implements Constants {
  public void run() {
    while (something < TIMEOUT)
    {}
  }
}


интерфейс Constants обычно кладут в модуль импортируемый в модули клиента и сервера.
PM   Вверх
jk1
Дата 11.3.2010, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Если какие-то классы или ресурсы требуются в нескольких проектах, их удобно упаковывать в .jar и подключать в качестве библиотеки. Явное указание версии спасет от проблем при возможно модификации.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
MaxPayneC
Дата 11.3.2010, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 5
Всего: 9



Помимо выше написанных советов, для констант я посоветовал бы использовать абстрактный класс, а не интерфейс, а еще лучше енам.
PM   Вверх
Ak47black
Дата 11.3.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



У меня проблема с функциями тогда ещё
Как их сделать общими наряду с классами?
Код

public interface constants
{
    public final int BUFFLEN = 1024;

    public final int GET_FILE_LIST = 0;
    public final int SEND_FILE_LIST = 1;
    public final int SEND_FILE_INFO = 2;
    public final int GET_FILE_DATA = 3;
    public final int SEND_FILE_DATA = 4;
    public final int SEND_END = 5;
    public final int GET_FILE_SIZE = 6;
    public final int SEND_FILE_SIZE = 7;
    
    public void test1()
    {
        
    }
}

Ошибка
Цитата

interface methods cannot have body

PM MAIL   Вверх
jk1
Дата 11.3.2010, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Код

public abstract class Utils {

    public static final String CONSTANT = "somestring";

    public static String utilMethod(String input){
      return input;  
    }
}

Код

import static edu.jk.test.Utils.*;

public class Project {

    public void someMethod(){
        // нам доступна константа
        String tmp = CONSTANT;
        // и метод
        String result = utilMethod(tmp);
    }
}



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Ak47black
Дата 11.3.2010, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



У меня на
Код

import static edu.jk.test.Utils.*;

Цитата

package edu.jk.test does not exist

А по более простому способу можно как-то сделать?
PM MAIL   Вверх
jk1
Дата 11.3.2010, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

package edu.jk.test does not exist

 smile Это же пример. Укажите там фактическое расположение вашего класса с константами и методами и все заработает.
Цитата

А по более простому способу можно как-то сделать? 

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


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Ak47black
Дата 13.3.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Не знаете всеровно у меня как-то невыходит  smile  . Перепробовал всё что знал, но дело не двигается.

Давайте по новому кругу......
Например как сделать что-бы хоть внутри проекта одного
Есть код
test.java
Код

import p1.*;

public class test {
    
    public static void main(String[] args) {
     
     utilMethod(); //Ошибка
    }
}


utils.java
Код

package p1;
public abstract class utils {
    public static final String CONSTANT = "somestring";
    
    public static String utilMethod(String input){
      return input;  
    }
}

Получаю ошибку
Цитата

cannot find symbol method utilMethod()


Добавлено @ 20:33
P.S.
Я в Jav'е полный новичок.

Это сообщение отредактировал(а) Ak47black - 13.3.2010, 20:34
PM MAIL   Вверх
MaxPayneC
Дата 13.3.2010, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 5
Всего: 9



Для того чтобы заработал ваш пример, надо сделать либо
Код

 public static void main(String[] args) {
     
     utils.utilMethod();
    }

либо
Код

import static p1.utils.*;

В классе, который вызывает метод.
PM   Вверх
Christoph
Дата 13.3.2010, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11



Код

import p1.*;
public class test {
    
    public static void main(String[] args) {
     
     utils.utilMethod("222"); 
    }
}


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

не успел :(

Цитата

Например как сделать что-бы хоть внутри проекта одного


Может лучше будет в одном пакете объявить несколько классов

Это сообщение отредактировал(а) Christoph - 13.3.2010, 20:54


--------------------
user posted image
PM MAIL ICQ   Вверх
Ak47black
Дата 13.3.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Спасибо, у меня только что у самого произошло озарение как тут всё устроено.
Привычка думать что тут всё как в C++  smile , а оказывается это только похоже.

Добавлено @ 20:53
Извините пожалуйста если что я нетак написал когда я шёл к цели  smile 

Это сообщение отредактировал(а) Ak47black - 13.3.2010, 20:54
PM MAIL   Вверх
Christoph
Дата 13.3.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11



В С++ так же само вроде вызываются статические методы


--------------------
user posted image
PM MAIL ICQ   Вверх
Ak47black
Дата 13.3.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Я сам метод определения имел ввиду smile
Например в C++ или Delphi можно сделать глобальные функции не привязанные к классу. Но в Java насколько я понял этого сделать нельзя. (тут всё должно быть объектом)


Это сообщение отредактировал(а) Ak47black - 13.3.2010, 21:06
PM MAIL   Вверх
MaxPayneC
Дата 13.3.2010, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 5
Всего: 9



Цитата(Ak47black @  13.3.2010,  21:04 Найти цитируемый пост)
Но в Java насколько я понял этого сделать нельзя.

Вы правильно поняли.
Цитата(Ak47black @  13.3.2010,  21:04 Найти цитируемый пост)
(тут всё должно быть объектом)

А вот это не так.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.