Определение приведения типа в Java - PullRequest
7 голосов
/ 14 января 2012

Я хочу определить тип, приведенный от произвольного типа к примитивному типу данных в Java. Можно ли определить приведение из одного произвольного типа в другой произвольный тип?

public class Foo{
    //methods, constructor etc for this class
    ...
    //make it possible to cast an object of type Foo to an integer 
}
//example of how an object of type foo would be cast to an integer
public class Bar(){
    public static void main(String[] args){
        Foo foo1 = new Foo();
        int int1 = (int)foo1;
        System.out.println(int1+"");
    }
}

Ответы [ 4 ]

9 голосов
/ 14 января 2012

Вы не можете разыграть его, но можете предоставить функцию преобразования:

public class Foo{
    //methods, constructor etc for this class
    ...
    public int toInt(){
        //convert to an int.
    }    
}

Бар становится:

public class Bar(){
    public static void main(String[] args){
        Foo foo1 = new Foo();
        int int1 = foo1.toInt();
        System.out.println(int1+"");
    }
}
3 голосов
/ 14 января 2012

Нет, это не так.Это на самом деле не имеет смысла: как Foo может стать int?

Скорее определить последовательность соответствующих методов, таких как:

public int toInt() { return 42; }

Типизация между примитивными типамии типы Java, такие как между int и Integer, изначально даже не были частью Java.

3 голосов
/ 14 января 2012

Невозможно напрямую преобразовать тип класса (например, Foo) в тип примитива. Вместо этого вы должны определить методы (например, int asInteger()), которые возвращают значение объекта Foo в виде целого числа.

1 голос
/ 14 января 2012

класс Foo должен расширять номер.Зачем тебе это делать?почему бы просто не получить доступ к переменной int внутри foo.

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