Как скопировать сигнатуры методов из одного класса в файл? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть класс Java, который содержит все мои методы, которые можно использовать в других частях фреймворка. Их много. Я не могу ничего с этим поделать из-за политики компании.

Я хотел бы скопировать все строки из этого класса, который начинается с «public», в файл или другой класс. Просто иметь методы подписи для облегчения поиска конкретных функций. Эти методы добавляются, удаляются сверхурочно, так что, может быть, это метод для копирования всех из них, который можно запускать вручную, когда мне это нужно? Может быть, регулярные выражения могут помочь, но я не знаю, как с этим справиться.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Вы можете использовать javadoc для создания документации для вас, при условии, что вы добавляете комментарии javadoc к своему методу.

Например, предположим, что у вашего класса есть метод User getUser(int id). Также предположим, что ваш класс находится в пакете com.example.myproject. Непосредственно перед определением метода вы должны поместить что-то вроде этого

/**
 * Returns a user given an id
 *
 * @param  id   the id the User has on database
 * @return      An instance of <code>User</code> corresponding to the given id
 */
 public User getUser(int userId) {

Обратите внимание, что комментарий начинается с /**, а не с /*.

Как только вы это сделаете, вы можете вызвать javadoc, чтобы сгенерировать html-документацию для вашего пакета.

javadoc com.example.yourproject

Здесь - руководство для javadoc с дальнейшими инструкциями, если вам нужно сделать что-нибудь более причудливое. И здесь - несколько советов о том, как лучше всего написать вашу документацию (устаревшую, но все же хорошую).

0 голосов
/ 09 ноября 2018

Отражением вы можете сделать что-то вроде:

import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.Arrays;
import java.util.stream.Collectors;

public class ReflectionCode {
    public static String reflect(Class<?> classToRead) {
        StringBuilder sb = new StringBuilder();
        for (Method clas : classToRead.getMethods()) {
            System.out.println(clas.getReturnType().getSimpleName() + " " +                                    
                clas.getName() + "(" + String.join(",", //
                    Arrays.stream(clas.getParameters())//
                        .map(ReflectionCode::parameterToString)//
                        .collect(Collectors.toList()))
                + ")");
        }
        return sb.toString();
    }

    public static String parameterToString(Parameter p) {
        return p.getType().getSimpleName() + " " + p.getName();
    }

    public static void main(String[] args) {
        System.out.println(reflect(ReflectionCode.class));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...