簡體   English   中英

當元素具有不同類型時,object 數組的行為如何

[英]how array of object behave when the elments are of diiferent types

,,,

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Try {
    public static void main(String[] args) {
        String  [] a = new String [5];
        a[0]="0";
        a[1]="1";
        List<List<String>> list = new ArrayList<>();
        list.add(Arrays.asList(a));
        for(List l : list)
        {
            System.out.println(l.get(0));
        }

        Object [] s = new Object[5];
        Object  [] d = new Object[10];

        d[0]=10;
        d[1]=10;
        d[2]="me";
        d[3]=new Integer(3);
        d[4]=new person();
        d[5]= 'x';
        for(Object i : d)
        {
            System.out.println(i);

        }
        System.out.println(new person().toString());

    }
    static class person {
        String name = "my name";
        int age = 50;

        public person()
        {
            name ="new name";
        }
        @Override
        public String  toString()
        {
            return name + "\n" + age;
        }
    }
}

,,,

我期待當您創建一個對象數組並使用強制轉換打印它時,它會打印出哈希碼。但是上面的代碼打印的值就好像它被強制轉換一樣,如果這是一個新的 java 功能?

System.out.println(x)將調用xtoString()方法。 除非被覆蓋,否則該方法將打印出對象在 memory 中的位置。 你已經覆蓋了它。 這是因為即使分配給超類,子類方法也會“保留”。

class Foo {
    public int run() {
        return 1;
    }
}

class Baz extends Foo {
    @Override
    public int run() {
        return 2;
    }
}

...

Foo f = new Baz();
f.run(); // >>> 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM