Java — и является кодом для проверки исходного кода пользовательских пользовательских методов (см. Код из программы)

#java #methods

#java #методы

Вопрос:

Ищу способ показать код для пользовательских методов, созданных пользователем в программе Java. Я хочу просмотреть код для специально названных пользовательских методов Java. Я не ищу способ просмотра кода для этих стандартных методов, встроенных в Java.

В R легко увидеть код либо для созданных пользователем функций, либо для просмотра кода для многих встроенных функций. Просто введите имя функции без завершающих скобок. Например, часть кода, которая отображается из функции data.frame, показана ниже. Кажется разумным, что в Java должна быть аналогичная функция.

 data.frame

function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, 
    fix.empty.names = TRUE, stringsAsFactors = default.stringsAsFactors()) 
{
    data.row.names <- if (check.rows amp;amp; is.null(row.names)) 
        function(current, new, i) {
            if (is.character(current)) 
                new <- as.character(new)
            if (is.character(new)) 
                current <- as.character(current)
            if (anyDuplicated(new)) 
                return(current)
            if (is.null(current)) 
                return(new)
            if (all(current == new) || all(current == "")) 
                return(new)
            stop(gettextf("mismatch of row names in arguments of 'data.frame', item %d", 
                i), domain = NA)
        }
    else function(current, new, i) {
        if (is.null(current)) {
            if (anyDuplicated(new)) {
                warning(gettextf("some row.names duplicated: %s --> row.names NOT used", 
                  paste(which(duplicated(new)), collapse = ",")), 
                  domain = NA)
                current
            }
            else new
        }
        else current
    }
    object <- as.list(substitute(list(...)))[-1L]
    mirn <- missing(row.names)
    mrn <- is.null(row.names)
    x <- list(...)
    n <- length(x)
    if (n < 1L) {
        if (!mrn) {
            if (is.object(row.names) || !is.integer(row.names)) 
                row.names <- as.character(row.names)
            if (anyNA(row.names)) 
                stop("row names contain missing values")
            if (anyDuplicated(row.names)) 
                stop(gettextf("duplicate row.names: %s", paste(unique(row.names[duplicated(row.names)]), 
                  collapse = ", ")), domain = NA)
        }
        else row.names <- integer()
        return(structure(list(), names = character(), row.names = row.names, 
            class = "data.frame"))
    }
    vnames <- names(x) 

     etc ...................
  

Комментарии:

1. Что ж, это может показаться вам разумным, но в Java такой функции нет. Исходный код недоступен во время выполнения, поскольку он преобразуется в байтовый код на этапе компиляции. Только определенные вещи, такие как имена типов, имена функций и имена полей, доступны через отражение.

2. Если вы используете IDE и диспетчер зависимостей, такой как Maven, ваша IDE может извлекать исходный код и отображать его. Помните, что в отличие от R, Java компилируется в байтовый код, поэтому JAR обычно не содержит исходников.

3. Смотрите Пакет отражения для получения информации, доступной во время выполнения.

Ответ №1:

Вы также можете видеть функции, созданные другими в Java, но вы должны делать это через исходный код. Если у вас есть IDE, у вас должны быть функции «показать объявление». Например, в IntelliJ просто ctrl-leftclick при вызове метода покажет вам, какой код выполняется.

Функция, которую вы видите здесь в R или, например, Python, чаще встречается в langage, который можно интерпретировать. С помощью Jshell, который является REPL Java, вы можете получить представление о java doc непосредственно из REPL, см. https://cr.openjdk.java.net /~rfield/tutorial/JShellTutorial.html#вкладка-завершение —-фрагменты