Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Параметры методов / 15 сообщений из 15, страница 1 из 1
28.05.2007, 23:22
    #34556484
kylix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
Можно ли Java передать в качестве параметра метода другой метод? Если да как это реализуется
...
Рейтинг: 0 / 0
29.05.2007, 00:03
    #34556517
Sim@k0ff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
kylixМожно ли Java передать в качестве параметра метода другой метод? Если да как это реализуется

Привет!
Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 void  Go(){
	bla(getA(), getB());
}

 int  getA(){
	 return   5 ;
}
 int  getB(){
	 return   10 ;
}
 int  bla( int  A,  int  B){
	 return  A * B;
}
...
Рейтинг: 0 / 0
29.05.2007, 00:09
    #34556519
kylix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
да че то так не срабатывает пишет legendre.java:117: ')' expected
...
Рейтинг: 0 / 0
29.05.2007, 00:10
    #34556523
Sim@k0ff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
kylixда че то так не срабатывает пишет legendre.java:117: ')' expected

Покажи кусок кода
...
Рейтинг: 0 / 0
29.05.2007, 00:18
    #34556527
kylix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
double lfk(double fun(double ),long n,double T)
{return (2*n+1)/T; }
...
Рейтинг: 0 / 0
29.05.2007, 00:21
    #34556529
Sim@k0ff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
kylixdouble lfk(double fun(double ),long n,double T)
{return (2*n+1)/T; }

А это что - double fun(double )?
...
Рейтинг: 0 / 0
29.05.2007, 00:28
    #34556533
kylix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
Вообщем мне нужно передать в функцию другую функцию возвращающую значение double , и имеющую в качестве параметра переменную того же типа, определить ее заранее я не могу.Это может быть любая функция определенная аналогичным образом . В С++ это делалось с помощью указателя на функцию , в java указателей нет поэтому не знаю как реализовать
...
Рейтинг: 0 / 0
29.05.2007, 00:30
    #34556536
kylix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
То есть надо код перенести с С++ на Java :)
...
Рейтинг: 0 / 0
29.05.2007, 00:36
    #34556543
Sim@k0ff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
kylixТо есть надо код перенести с С++ на Java :)

С С++ я к сожалению не знаком, потому и не знаю ничего про указатели на функцию.
Наверное кроме примера, опубликованного выше, помочь ничем не смогу =(
Сори.
...
Рейтинг: 0 / 0
29.05.2007, 00:42
    #34556546
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
kylixТо есть надо код перенести с С++ на Java :)
А выучить Java религия не позволяет?
Такие словая как интерфейс и делегатирование знакомы?
...
Рейтинг: 0 / 0
29.05.2007, 00:44
    #34556548
блаблабла
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
1-й способ (кошерный) Interface + Implementations. Передается объект релизующий нужную логику.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 interface  Command
{
     void  execute();
}

 class  foo
{
     public   static   void  main(String[] args)
    {
        f( new  Command() {
             void  execute() {
                System.out.println("foo");
            }
        });
    }
     static   void  f(Command cmd)
    {
        cmd.execute();
    }
}
2-й способ (не кошерный, но применимый) Reflection API. Передается название метода (статического или нет - по ситуации).
...
Рейтинг: 0 / 0
29.05.2007, 00:51
    #34556552
kylix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
2 Leonidv : религия позволяет , только я новичок в Java поэтому спрашиваю . В гугле искал но не нашел, может плохо искал. Про интерфейсы слышал еще из IDL , про делегатирование нет .

2 : блаблабла спасибо использую ваш вариант
...
Рейтинг: 0 / 0
29.05.2007, 09:01
    #34556779
Vurn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
Так как любая функция в Java принадлежит объекту, то и вместо передачи указателя на функцию передается ссылка на объект, в котором нужная функция и вызывается.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
28.10.2014, 10:28
    #38788978
leonrom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
kylix, вот работающий пример (из 2-х файлов )
//---- 1:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
/*
 *  развитие примера От: 	MAPCUAHUH  Дата: 	26.03.07 20:02  http://rsdn.ru/forum/java/2420033.flat
 */
class F1 implements MyFuncPtr {
	public int doInit(int a) {
		return a + 1;
	}
	public void init(){
		Propi propi = new Propi();
		propi.init(this, 1);		
	}
}

class F2 implements MyFuncPtr {
	public int doInit(int a) {
		return a - 1;
	}
	public void init(){
		Propi propi = new Propi();
		propi.init(this, 1);		
	}	
}

public class Main {
	
	public static void main(String[] args) {
		System.out.println("start -----");
		
		F1 f1 = new F1();
		f1.init();
		
		F2 f2 = new F2();
		f2.init();
		
		System.out.println("===== finis");
	}
}



//---- 2:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
interface MyFuncPtr {
	int doInit(int a);
}

public class Propi {
	public void init(MyFuncPtr f, int arg) {
		System.out.println("\ndo something ...");
		System.out.println(f.doInit(arg));
	}
}



//---- результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
start ---

do something ...
2

do something ...
0
finis ===
...
Рейтинг: 0 / 0
28.10.2014, 10:35
    #38788989
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры методов
leonrom,

С разморозкой! На пост 2007го года отвечам рецептом 2007го года? Тут, как бы, Java 8 уже вышла с лямбдами.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Параметры методов / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]