我们有关于ADT,泛型和接口的作业。我一直在设计一个名为toString()的方法。基本上,我们必须将对象类型更改为字符串。这样的接口和实现类。
{{1}}
让我们假设我有一个变量类型为Object(或T)。如何编码toString方法或如何更改变量类型。
答案 0 :(得分:0)
好吧,假设您已经使用类型参数Stack
创建了接口T
,则只需将Stack1
的实现更改为:
class Stack1 implements Stack<String> {
public boolean add(String newItem) { //Code }
public boolean isEmpty() { //Code }
public boolean isFull(); { //Code }
}
或者如果您只想使用Items
来使用此堆栈,则使用:
class Stack1 implements Stack<Items> {
public boolean add(Items newItem) { //Code }
public boolean isEmpty() { //Code }
public boolean isFull(); { //Code }
}
如果由于某些原因无法更改代码,而只是更新方法,则可以使用instanceof
来验证对象是否是String
的{{1}}的实例使用Items
方法之前。像这样:
toString()
这也适用于public boolean add(Object newItem) {
if (newItem instanceof String) {
String newItemString = (String) newItem;
System.out.println(newItemString);
} else {
// do something else...
}
}
参数。请注意,每个Java类默认都扩展了T
类,并且方法Object
属于toString()
。因此,您可以在所需的任何Java对象中调用此方法。因此,如果您执行以下操作:Object
,对于作为参数传递给方法ok的对象,它不会失败吗?
答案 1 :(得分:0)
请确保将Stack
,Stack1
和Items
放在每个具有相同名称(Stack.java
,Stack1.java
,{{1 }}, 分别)。之后,您应该在Items.java
类中为实现函数返回某些值。例如:
Stack1
此外,请确保您的class Stack1 implements Stack {
public boolean add(Object newItem) {
return true;
}
public boolean isEmpty() {
return true;
}
public boolean isFull() {
return true;
}
}
的{{1}}函数始终返回字符串。例如:
Items
如果未报告任何错误,则在运行此toString
方法时:
public class Items {
@Override
public String toString() {
return "Some string";
}
}
它应该打印出来:
main