java - 需要有关 java 泛型问题的帮助
问题描述
我的输出目前是:
复仇者联盟@15db9742 复仇者联盟@6d06d69c
我还需要弄清楚如何使用通用打印方法显示名称。我一直在尝试类似的事情:但是经过几天GenericMethod_violette.<Avengers>print(avenger.getName())
的处理,我似乎陷入了困境。GenericMethod_violette.<Avengers>print(avenger.trueIdentity())
我的输出需要是:
复仇者联盟@15db9742 复仇者联盟@6d06d69c
托尼·斯塔克、布鲁斯·班纳
我的GenericMethod_violette.java
:
import java.io.ObjectInputStream.GetField;
public class GenericMethod_violette {
public static void main(String[] args ) {
Avengers[] avenger = { new Avengers("Tony Stark"), new Avengers("Bruce Banner")};
GenericMethod_violette.<Integer>print(integers);
GenericMethod_violette.<String>print(strings);
GenericMethod_violette.<Avengers>print(avenger);
}
public static <E> void print(E[] list) {
for (int i = 0; i < list.length; i++)
System.out.print(list[i] + " ");
System.out.println();
}
}
我的Avengers.java
:
public class Avengers
{
private String trueIdentity;
public Avengers(String name)
{
trueIdentity = name;
}
public String getName()
{
return trueIdentity;
}
public String sayTrueIdentity()
{
return "Hello, I'm " + trueIdentity + "!";
}
}
解决方案
你可以在复仇者联盟中使用 write toString
public class Avengers
{
private String trueIdentity;
public Avengers(String name)
{
trueIdentity = name;
}
public String getName()
{
return trueIdentity;
}
public String sayTrueIdentity()
{
return "Hello, I'm " + trueIdentity + "!";
}
// write any format you want to print
@override
public String toString()
{
return this.getName() + this.sayTrueIdentity();
}
}
然后将您的 GenericMethod_violette.print 方法更改为使用 toString()
public static <E> void print(E[] list) {
for (int i = 0; i < list.length; i++)
System.out.print(list[i] + " ");
System.out.println();
}
复仇者联盟打印格式的原因 - Avengers@15db9742
In java all objects have a toString() method, which is invoked when you try and print the object.
System.out.println(myObject); // invokes myObject.toString()
This method is defined in the Object class (the superclass of all Java objects). The Object.toString() method returns a fairly ugly looking string, composed of the name of the class, an @ symbol and the hashcode of the object in hexadecimal. The code for this looks like:
// Code of Object.toString()
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
So you need @overrride toString method.
推荐阅读
- html - 无法在登陆网页上打开下拉菜单、超链接和超链接按钮
- php - 期待 'STRING'、'NUMBER'、'NULL'、'TRUE'、'FALSE'、'{'、'[',得到 'undefined' (PHP)
- mysql - 使用别名到where子句查询mysql
- python - 处理日期时熊猫效率的问题
- three.js - 如何在使用 THREE.js 的客户片段着色器中将 RGB 用于 tDiffuse
- docker - Docker:./entrypoint.sh 未找到
- syntax - 在 Java 中打印一个模式
- c - 使用 const 指针或 const 数据有什么好处?
- php - 在laravel中将多个数据插入数据库
- python - 将数据框转换为列表和字典