Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
damhia
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 30
#1

Как получить методы класса?

07.04.2013, 19:11. Просмотров 1727. Ответов 15
Метки нет (Все метки)

Java
1
2
3
4
5
6
7
8
9
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter a class name ");
        String name = br.readLine();
        Class cl = Class.forName(name);
        Method []M = cl.getMethods();
        for(Method m:M)
        {
            System.out.println(m);
        }

Подскажите, пожалуйста, как получить методы только данного класса, а не как у меня вместе с методами надкласса?
Спасибо)

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2013, 19:11
Ответы с готовыми решениями:

Как из общего списка получить элементы одного класса? или как определить к какому классу принадлежит объект?
суть вопроса: Есть матрица. в ней хранятся ссылки на элементы класса и его...

Как получить название класса вне проекта?
Есть файл test.class как получить название данного стороннего класса и пакета в...

Как получить значение приватной переменной из другого класса?
Например есть код: class B { private int i = 22; } class A { ...

Методы абстрактного класса
Я новичек в яве помогите понять. Создал абстрактный класс в котором реализовал...

Поля, методы класса
В книге К. Арнольд, Д. Гослинг " Языки программирования . . . Глава 1.6. Классы...

15
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
07.04.2013, 20:01 #2
Java
1
getDeclaredMethods()
0
damhia
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 30
07.04.2013, 20:56  [ТС] #3
а если только публичных методов?

Добавлено через 52 минуты
Цитата Сообщение от mutagen Посмотреть сообщение
Java
1
getDeclaredMethods()
так я получу и приватные методы тоже..а мне нужны только публичные и только этого класс, без методов надкласса
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
07.04.2013, 21:03 #4
Попробуйте всё же почитать доки
Java
1
2
3
if(m.getModifiers() == Modifier.PUBLIC) {
                System.out.println(m.getName());
            }
2
damhia
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 30
07.04.2013, 21:08  [ТС] #5
Огромное вам спасибо)
0
St@nton
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 72
08.04.2013, 04:16 #6
А у меня что-то не работает. После попытки получить список возникает ошибка с исключением:
ClassNotFoundException
В чём тут может быть дело?
0
turbanoff
Эксперт Java
4013 / 3748 / 741
Регистрация: 18.05.2010
Сообщений: 9,329
Записей в блоге: 11
Завершенные тесты: 1
08.04.2013, 07:44 #7
JVM не может найти класс, используемый в вашем коде.
Смотрите имя класса и на какой строке вылетает, и добавляйте нужный класс в classpath.
0
damhia
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 30
08.04.2013, 09:17  [ТС] #8
Цитата Сообщение от St@nton Посмотреть сообщение
А у меня что-то не работает. После попытки получить список возникает ошибка с исключением:
ClassNotFoundException
В чём тут может быть дело?
Возможно, вы просто неправильно вводите имя класса...
нужно вводить что-то типа
Java
1
java.lang.Integer
0
St@nton
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 72
08.04.2013, 17:32 #9
Цитата Сообщение от damhia Посмотреть сообщение
Возможно, вы просто неправильно вводите имя класса...
нужно вводить что-то типа
Да, так и есть, вводил только окончание. Теперь работает) Только вот проблемка: если бы я был таким крутым программистом, который наизусть помнит полный путь интересующего класса, то скорее всего и его публичные методы тоже помнил бы)
0
damhia
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 30
08.04.2013, 21:24  [ТС] #10
Цитата Сообщение от St@nton Посмотреть сообщение
Да, так и есть, вводил только окончание. Теперь работает) Только вот проблемка: если бы я был таким крутым программистом, который наизусть помнит полный путь интересующего класса, то скорее всего и его публичные методы тоже помнил бы)
ахах)) это да, конечно)))
кстати - данное решение не работает в том случае, елси вы задаете какой-то свой класс...все так же выводятся методы надкласса...
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
08.04.2013, 22:45 #11
Цитата Сообщение от damhia Посмотреть сообщение
елси вы задаете какой-то свой класс...все так же выводятся методы надкласса...
враки:

Не по теме:


JAVADOC
getDeclaredMethods()
Returns an array of Method objects reflecting all the methods declared by the class or interface represented by this Class object. This includes public, protected, default (package) access, and private methods, but excludes inherited methods.

так что не надо
0
damhia
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 30
08.04.2013, 22:49  [ТС] #12
Цитата Сообщение от mutagen Посмотреть сообщение
враки:

Не по теме:


JAVADOC
getDeclaredMethods()
Returns an array of Method objects reflecting all the methods declared by the class or interface represented by this Class object. This includes public, protected, default (package) access, and private methods, but excludes inherited methods.

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

а если я задаю какой-то свой класс, то за компанию выводяться и методы надкласса(
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
08.04.2013, 23:30 #13
Цитата Сообщение от damhia Посмотреть сообщение
за компанию выводяться и методы надкласса(
не понимаю - вам что перевод сделать?
Этот метод выводит public, protected, private и default методы исключая унаследованные
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
import java.lang.reflect.Method;
 
/**
 *
 * @author mutagen
 */
public class A {
 
    void amethod() {
    }
 
    public static void main(String[] args) {
        Class ac = A.class;
        Class bc = B.class;
        Method[] am = ac.getDeclaredMethods();
        for (Method method : am) {
            System.out.println("A has " + method.getName());
        }
 
        Method[] bm = bc.getDeclaredMethods();
        for (Method method : bm) {
            System.out.println("B has " + method.getName());
        }
        System.out.println("Итак где же унаследованный метод amethod в B?");
 
    }
}
 
class B extends A {
 
    void bmethod() {
    }
}
Bash
1
2
3
4
5
6
run:
A has main
A has amethod
B has bmethod
Итак где же унаследованный метод amethod в B?
BUILD SUCCESSFUL (total time: 0 seconds)
0
damhia
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 30
09.04.2013, 00:04  [ТС] #14
не надо мне никакого перевода...
я просто хочу вывести все ПУБЛИЧНЫЕ и только ПУБЛИЧНЫЕ, без приватных и протектед...
я говорила об этом

Добавлено через 54 секунды
с надклассом вроде все ок...но еще было условие только ПУБЛИЧНЫЕ методы...

Добавлено через 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
package name_method;
 
public class Name_Method 
{
    @SuppressWarnings("rawtypes")
    
    public static void main(String[] args)throws Exception 
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter a class name ");
        String name = br.readLine();
        Class cl = Class.forName(name);
        Method []M = cl.getMethods();
        for(Method m:M)
        {
            if(m.getModifiers() == Modifier.PUBLIC) //забезпечуємо, щоб не було методів надкласу
            System.out.println(m);
        }
        
    }
    
        
 
}
 
class Kl {
    public void metod() {
        
    }
}
Добавлено через 1 минуту
а вот вывод
Java
1
2
3
4
5
Enter a class name 
name_method.Kl
public void name_method.Kl.metod()
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
последних двух быть не должно
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
09.04.2013, 00:14 #15
Цитата Сообщение от damhia Посмотреть сообщение
я просто хочу вывести все ПУБЛИЧНЫЕ и только ПУБЛИЧНЫЕ, без приватных и протектед...
я говорила об этом
девушка поменьше капса (я же модератор у меня есть ваш IP ), у вас что не хватает *** связать 2 метода в кучу, ОК я вам помогу:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package test;
 
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
 
/**
 *
 * @author mutagen
 */
public class A {
 
    void adefault() {
    }
 
    public void apublic() {
    }
 
    private void aprivate() {
    }
 
    protected void aprotected() {
    }
 
    public static void main(String[] args) {
        Class ac = A.class;
        Class bc = B.class;
        Method[] am = ac.getDeclaredMethods();
        for (Method method : am) {
            if (method.getModifiers() == Modifier.PUBLIC) {
                System.out.println("A has " + method.getName());
            }
        }
 
        Method[] bm = bc.getDeclaredMethods();
        for (Method method : bm) {
            if (method.getModifiers() == Modifier.PUBLIC) {
                System.out.println("B has " + method.getName());
            }
        }
        System.out.println("Итак где же остальные?");
 
    }
}
 
class B extends A {
 
    void bdefault() {
    }
 
    public void bpublic() {
    }
 
    private void bprivate() {
    }
 
    protected void bprotected() {
    }
}
Bash
1
2
3
4
5
run:
A has apublic
B has bpublic
Итак где же остальные?
BUILD SUCCESSFUL (total time: 0 seconds)
Добавлено через 4 минуты
Цитата Сообщение от damhia Посмотреть сообщение
Method []M = cl.getMethods();
я наконец понял, Вы из тех девушек что не уделяют внимания мелочам
конечно же какая разница между getMethods и getDeclaredMethods - никакой
1
damhia
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 30
09.04.2013, 00:22  [ТС] #16
черт...извините)) я очень невнимательна=(
еще раз спасибо большое за помощь)
0
09.04.2013, 00:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 00:22

Не получается получить тип класса из параметризованного класса
Добрый день, дело в том, что я не очень знаком с параметризацией типов в java,...

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

Как получить разные элементы одного массива для разных объетов класса?
Приветствую. Есть массив String в котором 32 элемента(карты). Есть класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru