将对象类型更改为字符串

时间:2019-03-13 19:33:25

标签: java

我们有关于ADT,泛型和接口的作业。我一直在设计一个名为toString()的方法。基本上,我们必须将对象类型更改为字符串。这样的接口和实现类。

{{1}}

让我们假设我有一个变量类型为Object(或T)。如何编码toString方法或如何更改变量类型。

2 个答案:

答案 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)

请确保将StackStack1Items放在每个具有相同名称(Stack.javaStack1.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