java - 在 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
解决方案
类型转换不能“将字符串返回到同一个 Card 对象”——类型转换做了一些非常不同的事情。如果要更新现有 Card 对象的名称,则需要在 Card 类中添加“setter 方法”:
public void setCardName(String newName) {
cardName = newName;
}
完成此操作后,您可以调用此方法来更新名称main
:
card.setCardName(cardString);
推荐阅读
- c# - 解构是模棱两可的
- javascript - 如何在 DIV 标签中显示 Javascript 函数?
- python-3.x - Django模板三元类
- javascript - 在javascript中单击时如何使框消失?
- php - 如何在 PHP 中控制绑定参数变量
- php - 从 MariaDB 迁移到 MySQL - 差异
- jquery - Django Ajax 表单提交得到 500 Internal Server Error: TypeError at /articles/test_1 get() got an unexpected keyword argument 'id'
- java - 确定 Huffman 压缩文件的频率
- javascript - 变量未定义,在将其提供给函数后
- c++ - 从控制台程序在桌面中心显示 Win32 通用对话框