Есть ли способ в Java для создания пользовательских типов на основе базовых типов java.lang (например, String)? - PullRequest
0 голосов
/ 14 января 2019

существует ли в Java способ создания пользовательского класса на основе примитивного базового класса Java для придания производному классу семантики?

Пример: я хочу создать LinkedHashMap<LastName, Age> ages, где LastName - это пользовательский тип String и Age, пользовательский тип, полученный из Integer. Я просто пытался создать свой собственный класс

public class LastName extends String {
    //(no code in here, LastName has the same functionality as String)
}

но это невозможно. Есть ли другой способ добиться того, чего я хочу?

Ответы [ 3 ]

0 голосов
/ 14 января 2019

A String реализует интерфейс CharSequence, как классы StringBuffer и StringBuilder. Вы можете следовать тому же процессу.

public final class LastName implements CharSequence {

...

}
0 голосов
/ 14 января 2019

То, что вы, вероятно, хотите, это псевдонимы типа. Java не поддерживает это.

Лучший способ - создать класс-обёртку, примерно так:

class LastName{
    private String value;
} 

Другой способ - правильно называть переменные, например, не делать:

String string = "Smith";

Но лучше сделать:

String lastName = "Smith";

или просто документируйте свой код с комментариями и javadoc.


Sidenote: Если вы все еще хотите использовать псевдонимы типов, вы можете использовать язык программирования Kotlin , который может компилироваться в java-код (и другие).

0 голосов
/ 14 января 2019
нет

NO

Эти уроки являются окончательными.

Обычный способ справиться с этим - создать класс-оболочку.

Например:

public class LastName {
    private final String value;
    public LastName(String value) {
        this.value = value;
    }
    public String get() { return value; } 
}
...