2017-06-11 5 views

答えて

2

同じ作者による以前の記事によると - removal of function types

  1. タイピングへの2つの基本的なアプローチがあります:名目と構造が。名目の身元はその名前に基づいています。 構造型のアイデンティティ(例えば、「 int型のタプル、int型」または「int型からfloatへの関数」として。)それはで構成されているものに基づいている

ほとんどの言語は、ほとんどが公称またはほとんど構造選びます; "縁の周り"を除いて公称と構造を正しく混合する多くの言語が入力されていません。 Javaはいくつかの例外を除いて( ほぼ完全に名目です:配列は構造型ですが、 下部の名目要素の型が常にある; ジェネリック医薬品は、あまりにも名目と構造 が混在しているが、これはです実際には の出典の一部です。

したがって、配列とジェネリックの一部は構造型です。

私は構造タイプが<T extends A & B>String[][]のスーパータイプであること<T extends A>、またはObject[]のスーパータイプであることのようなものかもしれないと思います。これらの型の互換性は、名前にのみ基づいていません。

1

私が言うことができる限り、Javaは名目上完全に型指定されています。 2つのオブジェクトは、同じ名前付きの型であれば型互換性があります。 Javaでは、クラスを宣言:

class A { 
    public int value; 
} 

class B { 
    public int value; 
} 

は言語のように、何もあなたを提供して同じ順序で宣言対等な構成員を利用するために構築します。

Cでは、A & BstructとしてSを宣言し、それらを使用して、互いの上にそれらをコピーしunionを形成し、その重なりを利用できることを意味同じバイナリレイアウトを有すること(特定の状況下で)を利用することができる一方。

関連する問題