首页 > 解决方案 > 在 Java 中类型转换回用户定义的对象

问题描述

我希望你们都平安健康。我在 java 中的类型转换有问题。我有一个 Card 对象,它的名称和编号分别为 String 和 int 类型。获得创建对象的名称和编号后,似乎我无法将字符串返回到同一个 Card 对象。是否可以在这里类型转换回相同的卡片对象?谢谢

package app;

public class Card {

    private String cardName;
    private int cardNumber;

    /**
     * This is the Constructor of the class Card that helps to create an object of Card, it has two arguments
     *
     * @param cardName   of type String, which indicates the name of the card e.g. Cross.
     * @param cardNumber of type int, which indicates the number of the card e.g. 10.
     */
    public Card(String cardName, int cardNumber) {
        this.cardName = cardName;
        this.cardNumber = cardNumber;
    }

    /**
     * This method will get the name of a Card object.
     *
     * @return Returns a String.
     */
    public String getCardName() {

        return cardName;
    }

    /**
     * This method will get the number of a Card object.
     *
     * @return Returns an integer.
     */
    public int getCardNumber() {

        return cardNumber;
    }
}

package app;

public class App {

    public static void main(String[] args){

        Card card = new Card("Circle", 10);
        System.out.println("card before type cast: "+card);

        String cardString = card.getCardName() + " " + card.getCardNumber();
        System.out.println("cardString: "+cardString);

//        String cardStringName = cardString.split(" ")[0];
//        int cardStringNumber = Integer.parseInt(cardString.split(" ")[1]);

        Card cardd = ((Card) cardString); // Error message here: Inconvertible types; cannot cast 'java.lang.String' to 'app.Card'
        System.out.println("card after type cast: "+cardd);
    }
}

输出: 错误:(16、30)java:不兼容的类型:java.lang.String 无法转换为 app.Card

标签: java

解决方案


类型转换不能“将字符串返回到同一个 Card 对象”——类型转换做了一些非常不同的事情。如果要更新现有 Card 对象的名称,则需要在 Card 类中添加“setter 方法”:

public void setCardName(String newName) {
    cardName = newName;
}

完成此操作后,您可以调用此方法来更新名称main

card.setCardName(cardString);

推荐阅读