powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли в java загрузить функционал класса из файла.
25 сообщений из 69, страница 2 из 3
Можно ли в java загрузить функционал класса из файла.
    #34382307
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно еще сделать так.

interface InterfaceA {
[// some methods]
}

interface InterfaceB [extends A] {
void print();
}

А в коде:

if(x instabceof InterfaceB ) {
((InterfaceB)x).print();
}

Все дело в том, что за гибкость рефлекшна приходится платить производительностью, поэтому не рекомендуется использовать его где попало.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34382316
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinJython Уё! Сан решили включить в SDK то, что уже фиг знает сколько лет написано?
Типичная политика софтверного гиганта ИМХО.

По сабжу

JScript работает! Только что попробовал на JDK 1.6.0.
Код: plaintext
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.
package mayton.tools.test_script;

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class proba_jscript {

    public proba_jscript() throws ScriptException
    {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        engine.put("age","18");
        engine.eval("if (age >= 18){ " +
                        "    print('Old enough to vote!'); " +
                        "} else {" +
                        "    print ('Back to school!');" +
                        "}"
        );
    }

    public static void main(String[] args) throws ScriptException
    {
        new proba_jscript();
    }
}

Хех... А кто-то в форуме бил себя в грудь и говорил дескать Java!=JScript.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34382525
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Хех... А кто-то в форуме бил себя в грудь и говорил дескать Java!=JScript.
Смотря что рассматривать под Java. Если как язык - так ничто в вашем посте не говорит об обратном ( Java != JScript). А то следуя вашей логике Java == Python, Java == Ruby, Java == Haskell...
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34382531
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvЕсли как язык - так ничто в вашем посте не говорит об обратном ( Java != JScript).

Верно. Просто я хотел акцентировать внимание на том, что популярный слоган приобретает несколько иной смысл. Да Java!=JScript. Но может-ли Java являтся чем-то другим по отношению к JScript?

Впрочем это оффтоп.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385273
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K1RUHAА можно еще сделать так.

interface InterfaceA {
[// some methods]
}

interface InterfaceB [extends A] {
void print();
}

А в коде:

if(x instabceof InterfaceB ) {
((InterfaceB)x).print();
}

Все дело в том, что за гибкость рефлекшна приходится платить производительностью, поэтому не рекомендуется использовать его где попало.

Гм, а динамическое преобразование типа в Java катит?
Если да, то должен работать такой вот код:

I=x.GetInterface(); //возращается интерфейс типа x
if(x instabceof I ) {
((I)x).print();
}

или так (через преобразование типа):
I=x.GetType(); //возращается тип объекта x
if(x instabceof I ) {
((I)x).print();
}
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385339
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы знать, какие методы интерфейса можно вызывать, надо чтобы интерфейс был известен на момент компиляции. Так что в Вашем случае - или получать ссылки на интерфейс не надо (т.к. толку от этого никакого), или можно проверять классы на имплементацию ими интерфейсов и приводить их к неким интерфейсам...
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385368
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗашедшийДля того, чтобы знать, какие методы интерфейса можно вызывать, надо чтобы интерфейс был известен на момент компиляции. Так что в Вашем случае - или получать ссылки на интерфейс не надо (т.к. толку от этого никакого), или можно проверять классы на имплементацию ими интерфейсов и приводить их к неким интерфейсам...

Допустим я в базовом классе сделаю метод, который возвращает тип класса - GetType, а во всех наследниках его переопределять. Смогу ли я, как спрашивал выше, динамически привести ссылку к нужному типу, хранящемуся в переменной (т.е. преобразовать не к константному типу, а к типу из переменной)?
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385409
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin K1RUHAА можно еще сделать так.

interface InterfaceA {
[// some methods]
}

interface InterfaceB [extends A] {
void print();
}

А в коде:

if(x instabceof InterfaceB ) {
((InterfaceB)x).print();
}

Все дело в том, что за гибкость рефлекшна приходится платить производительностью, поэтому не рекомендуется использовать его где

попало.

Гм, а динамическое преобразование типа в Java катит?
Если да, то должен работать такой вот код:

I=x.GetInterface(); //возращается интерфейс типа x
if(x instabceof I ) {
((I)x).print();
}

или так (через преобразование типа):
I=x.GetType(); //возращается тип объекта x
if(x instabceof I ) {
((I)x).print();
}

Не надо использовать объектно-ориентированный язык, как скриптовый! Если посмотреть в сторону паттернов ООД, то можно найти

паттерн Command.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 interface  Executable {
 void  execute();
}

 class  B  implements  Executable {

 void  print(
// done
);

 void  execute() {
print();
}

}
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385441
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K1RUHA Fixin K1RUHAА можно еще сделать так.

interface InterfaceA {
[// some methods]
}

interface InterfaceB [extends A] {
void print();
}

А в коде:

if(x instabceof InterfaceB ) {
((InterfaceB)x).print();
}

Все дело в том, что за гибкость рефлекшна приходится платить производительностью, поэтому не рекомендуется использовать его где

попало.

Гм, а динамическое преобразование типа в Java катит?
Если да, то должен работать такой вот код:

I=x.GetInterface(); //возращается интерфейс типа x
if(x instabceof I ) {
((I)x).print();
}

или так (через преобразование типа):
I=x.GetType(); //возращается тип объекта x
if(x instabceof I ) {
((I)x).print();
}

Не надо использовать объектно-ориентированный язык, как скриптовый! Если посмотреть в сторону паттернов ООД, то можно найти

паттерн Command.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 interface  Executable {
 void  execute();
}

 class  B  implements  Executable {

 void  print(
// done
);

 void  execute() {
print();
}

}


ага:

void execute(name) {
if name="print" then
print();
elseif name="run" then
run()
...

}

ага, только зачем писать интерпретатор, если джава МОЖЕТ вызвать нужный метод (сама интерпретатор) и еще придется беспокоиться о параметрах, ведь у методов могут быть ПАРАМЕТРЫ
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385467
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixinага, только зачем писать интерпретатор, если джава МОЖЕТ вызвать нужный метод (сама интерпретатор) и еще придется беспокоиться о параметрах, ведь у методов могут быть ПАРАМЕТРЫ
Видите ли, Java - не интерпретатор в том виде, в котором Вы это воспринимаете. То есть у нее нет никаких исходных кодов, у нее есть скомпилированный код. Только скомпилирован он не для "железа", а для виртуальной машины. Если взять процессор, работающий как вирт.машина (т.н. Java-процессор) - то ровно тот же самый код замечательно будет исполняться на нем без всяких дополнительных заморочек.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385485
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашедший Fixinага, только зачем писать интерпретатор, если джава МОЖЕТ вызвать нужный метод (сама интерпретатор) и еще придется беспокоиться о параметрах, ведь у методов могут быть ПАРАМЕТРЫ
Видите ли, Java - не интерпретатор в том виде, в котором Вы это воспринимаете. То есть у нее нет никаких исходных кодов, у нее есть скомпилированный код. Только скомпилирован он не для "железа", а для виртуальной машины. Если взять процессор, работающий как вирт.машина (т.н. Java-процессор) - то ровно тот же самый код замечательно будет исполняться на нем без всяких дополнительных заморочек.

Вы хотите сказать, что виртуальная машина не знает, есть ли у объекта X метод print?
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385510
max_from_sumy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знает, и для того чтобы вызвать этот метод можно использовать reflection, как и описали выше. Вопрос в другом, возможно вам вообще не нужен в описываемой ситуации reflection и можно обойтись стандартными приемами ООП.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385521
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_from_sumyЗнает, и для того чтобы вызвать этот метод можно использовать reflection, как и описали выше. Вопрос в другом, возможно вам вообще не нужен в описываемой ситуации reflection и можно обойтись стандартными приемами ООП.

Вот и я прошу отбросить понты и предлагаю вариант - динамическое преобразование к динамическому типу. Такое прокатит?
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385525
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin max_from_sumyЗнает, и для того чтобы вызвать этот метод можно использовать reflection, как и описали выше. Вопрос в другом, возможно вам вообще не нужен в описываемой ситуации reflection и можно обойтись стандартными приемами ООП.

Вот и я прошу отбросить понты и предлагаю вариант - динамическое преобразование к динамическому типу. Такое прокатит?

Зашедший 2 раза повторял, что не прокатит.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385562
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinВот и я прошу отбросить понты и предлагаю вариант - динамическое преобразование к динамическому типу. Такое прокатит?

- Вам уже описали все возможные и разумные варианты: Reflection, интерфейсы, интерфейсы+Reflection

- Вы хотите взять форум измором? Java язык жестко типизированый и о каких "динамических типах" Вы говорите не понятно.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34385735
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin.

Приведите пожалуйста пример применения вашей системы.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34388384
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov FixinВот и я прошу отбросить понты и предлагаю вариант - динамическое преобразование к динамическому типу. Такое прокатит?

- Вам уже описали все возможные и разумные варианты: Reflection, интерфейсы, интерфейсы+Reflection

- Вы хотите взять форум измором? Java язык жестко типизированый и о каких "динамических типах" Вы говорите не понятно.

Товарищ качалов. я хочу понять:
1. возможно ли хранить информацию о типе в переменной.
2. Можно ли привести один тип к другому, если другой тип задается не в коде программы, а хранится в переменной.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34388430
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin Kachalov FixinВот и я прошу отбросить понты и предлагаю вариант - динамическое преобразование к динамическому типу. Такое прокатит?

- Вам уже описали все возможные и разумные варианты: Reflection, интерфейсы, интерфейсы+Reflection

- Вы хотите взять форум измором? Java язык жестко типизированый и о каких "динамических типах" Вы говорите не понятно.

Товарищ качалов. я хочу понять:
1. возможно ли хранить информацию о типе в переменной.
2. Можно ли привести один тип к другому, если другой тип задается не в коде программы, а хранится в переменной.
1. Да - cм. Class
2. Нет
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34388836
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin Kachalov FixinВот и я прошу отбросить понты и предлагаю вариант - динамическое преобразование к динамическому типу. Такое прокатит?

- Вам уже описали все возможные и разумные варианты: Reflection, интерфейсы, интерфейсы+Reflection

- Вы хотите взять форум измором? Java язык жестко типизированый и о каких "динамических типах" Вы говорите не понятно.

Товарищ качалов. я хочу понять:
1. возможно ли хранить информацию о типе в переменной.
2. Можно ли привести один тип к другому, если другой тип задается не в коде программы, а хранится в переменной.

1. Возможно или нет - не знаю, но она там хранится самой Java - и сделать с етим ничего нельзя.
Никаких лишних телодвижений для етого делать не надо, токо дерайв от Object.
2. До лампочки где он хранится или описывается. Если класс дерайвед от другого, то он приведется, или приведется к интерфейсу который класс имплементировал.
К способу хранения - "динамически" или нет ето отношения не имеет.
В рантайм вывалится еррор.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34389146
Aristotelb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton SarinJython Уё! Сан решили включить в SDK то, что уже фиг знает сколько лет написано?
Типичная политика софтверного гиганта ИМХО.

По сабжу

JScript работает! Только что попробовал на JDK 1.6.0.
Код: plaintext
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.
package mayton.tools.test_script;

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class proba_jscript {

    public proba_jscript() throws ScriptException
    {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        engine.put("age","18");
        engine.eval("if (age >= 18){ " +
                        "    print('Old enough to vote!'); " +
                        "} else {" +
                        "    print ('Back to school!');" +
                        "}"
        );
    }

    public static void main(String[] args) throws ScriptException
    {
        new proba_jscript();
    }
}

Хех... А кто-то в форуме бил себя в грудь и говорил дескать Java!=JScript.

Более того возможно импортировать классы Java в js

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
       ScriptEngineManager sem = new ScriptEngineManager();  
       ScriptEngine jsEngine = sem.getEngineByName("js");
        try {
            
           Object rv = jsEngine.eval("importPackage(javax.swing);  " +
                  " JOptionPane.showMessageDialog(null,'My first js program in Java !!!');");
        } catch (ScriptException ex) {
            ex.printStackTrace();
        }

...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34389976
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin
Товарищ качалов. я хочу понять:
1. возможно ли хранить информацию о типе в переменной.
2. Можно ли привести один тип к другому, если другой тип задается не в коде программы, а хранится в переменной.
"Товарищ" Fixin. Отвечаю по пунктам:
1. Да, можно, в переменной типа java.lang.Class [иными словами: Reflection API ]
2. Да, можно, если приводимый объект принадлежит к типу который является наследником от того типа к которому производится приведение (как уже отметил выше A. Fig Lee любой объект можно привести к типу java.lang.Object) [иными словами: наследование, интерфейсы ]

- мне кажется Вы явно не хотите слышать ответы на свои вопросы.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34390008
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov Fixin
Товарищ качалов. я хочу понять:
1. возможно ли хранить информацию о типе в переменной.
2. Можно ли привести один тип к другому, если другой тип задается не в коде программы, а хранится в переменной.
"Товарищ" Fixin. Отвечаю по пунктам:
1. Да, можно, в переменной типа java.lang.Class [иными словами: Reflection API ]
2. Да, можно, если приводимый объект принадлежит к типу который является наследником от того типа к которому производится приведение (как уже отметил выше A. Fig Lee любой объект можно привести к типу java.lang.Object) [иными словами: наследование, интерфейсы ]

- мне кажется Вы явно не хотите слышать ответы на свои вопросы.
По пункту 2 - нельзя. В том смысле, в котором Fixin спрашивает. Если на момент компиляции тип неизвестен, то привести к нему использованием () нельзя.
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34390019
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню:
есть некий класс
Код: plaintext
1.
2.
3.
 public   abstract   class  UnknownClass {
     public  String hello();
}

Он хочет, чтобы в программе (которая не имеет в момент компиляции никаких данных об этом классе) можно было написать:
Код: plaintext
1.
2.
 public  String sayHello( Class  someClass, Object someObject) {
     return  ((someClass)someObject).hello();
Но - так не бывает :)
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34390337
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗашедшийПоясню:
есть некий класс
Код: plaintext
1.
2.
3.
 public   abstract   class  UnknownClass {
     public  String hello();
}

Он хочет, чтобы в программе (которая не имеет в момент компиляции никаких данных об этом классе) можно было написать:
Код: plaintext
1.
2.
 public  String sayHello( Class  someClass, Object someObject) {
     return  ((someClass)someObject).hello();
Но - так не бывает :)
- чего хочет Fixin он, по моему, сам не знает :) Главное что он не хочет учиться. Приведеную Вами конструкцию он вполне мог реализовать через Reflection:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 public   class  SomeClass {
    
     public   void  sayHello(){
        System.out.println("Hello!");
    }
    
}
вызов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 import  java.lang.reflect.*;

 public   class  Test {
    
     public   static   void  main(String[] args)  throws  Exception{
        invoke("SomeClass","sayHello");
    }
    
     public   static   void  invoke(String className, String methodName)  throws  Exception{
        Object object= Class .forName(className).newInstance();
        (object.getClass().getDeclaredMethod(methodName, null )).invoke(object, null );
    }
    
}
...
Рейтинг: 0 / 0
Можно ли в java загрузить функционал класса из файла.
    #34390359
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovПриведеную Вами конструкцию он вполне мог реализовать через Reflection:

Мог. Но цель его не в этом :)
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли в java загрузить функционал класса из файла.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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