Это незаконно, если я конвертирую или переопределяю код Java в kotlin с той же декларацией и API? - PullRequest
0 голосов
/ 21 апреля 2019

Например, исходный код класса Java java.io.File:

public class File
    implements Serializable, Comparable<File>
{
    /* -- Constructors -- */

    /**
     * Internal constructor for already-normalized pathname strings.
     */
    private File(String pathname, int prefixLength) {
        this.path = pathname;
        this.prefixLength = prefixLength;
    }

    /**
     * Internal constructor for already-normalized pathname strings.
     * The parameter order is used to disambiguate this method from the
     * public(File, String) constructor.
     */
    private File(String child, File parent) {
        assert parent.path != null;
        assert (!parent.path.equals(""));
        this.path = fs.resolve(parent.path, child);
        this.prefixLength = parent.prefixLength;
    }

    public boolean createNewFile() throws IOException {
        SecurityManager security = System.getSecurityManager();
        if (security != null) security.checkWrite(path);
        if (isInvalid()) {
            throw new IOException("Invalid file path");
        }
        return fs.createFileExclusively(path);
    }

    public boolean delete() {
        SecurityManager security = System.getSecurityManager();
        if (security != null) {
            security.checkDelete(path);
        }
        if (isInvalid()) {
            return false;
        }
        return fs.delete(this);
    }
}

Если я преобразую этот код в kotlin, что угодно, используя функцию копирования и вставки IntelliJ IDEA, или переопределите его вручную, и переписайтенекоторая внутренняя реализация.
Возможно, это выглядит так:

open class File : Serializable, Comparable<File> {
    /* -- Constructors -- */

    /**
     * Internal constructor for already-normalized pathname strings.
     */
    private constructor(pathname: String, prefixLength: Int) {
        this.path = pathname
        this.prefixLength = prefixLength
    }

    /**
     * Internal constructor for already-normalized pathname strings.
     * The parameter order is used to disambiguate this method from the
     * public(File, String) constructor.
     */
    private constructor(child: String, parent: File) {
        assert(parent.path != null)
        assert(!parent.path.equals(""))
        this.path = fs.resolve(parent.path, child)
        this.prefixLength = parent.prefixLength
    }

    @Throws(IOException::class)
    open fun createNewFile(): Boolean {
        //My implementation code here...
    }

    open fun delete(): Boolean {
        //My implementation code here...
    }
}

Предположим, это будет использоваться в моем личном и коммерческом приложении, нарушает ли оно коммерческую лицензию Oracle JDK или лицензию GPLV2.0?

1 Ответ

0 голосов
/ 25 апреля 2019

Может быть, никому нет дела до этого юридического заключения, но я думаю, что оно важно для решения некоторых технических вопросов.
Пока у меня есть один ответ, который я считаю правильным.
https://qr.ae/TWpiQ2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...