对象的默认stringify,相当于Java的toString?

时间:2014-04-07 19:22:45

标签: dart angular-dart

我刚刚看一下dart的3º教程,创建了评级组件。我想知道在对字符串进行字符串化时是否有相同的方法,类似于Java的toString。

例如:

MyClass myObject = new MyClass();
System.out.println(myObject);

如果覆盖将调用MyClass.toString(),否则将调用它的父级,直到达到java.lang.Object,给出默认的toString。

我觉得有点丑陋(完全主观):

<span ng-repeat="star in cmp.stars" > {{star.toString()}} </span>

我宁愿这样做:

    <span ng-repeat="star in cmp.stars" > {{star}} </span>

并实现我希望它以一种经过验证的方法显示的方式。这可能吗?

3 个答案:

答案 0 :(得分:6)

是的,对于print,字符串插值或角度胡须,它的工作原理如下。

通过覆盖对象上的String toString()方法,显示的值将是此toString()调用的结果。如果在类层次结构中没有定义toString(),则会调用toString()的{​​{1}}(Object将返回Instance of 'MyClass'。)

答案 1 :(得分:5)

如果你有这样的事情:

class MyClass {
    String data;

    MyClass(this.data);

    @override
    String toString() {
        return data;
    }
}

MyClass myObject = new MyClass("someData");
print(myObject); // outputs "someData", not 'Instance of MyClass'

我认为这可能就是你要找的东西。

答案 2 :(得分:1)

您可能会对Angular Dart UI项目中如何实现Rating组件感兴趣。检查this

塞吉。