不明点
以下のコードにおきまして、class RandomWordsState extends State<RandomWords> { //here
のうちState Class
に指定している型の<RandomWords>
のGenerics
記法について、理解することができません。
Dart
1//不明なGenerics 2import 'package:flutter/material.dart'; 3import 'package:english_words/english_words.dart'; 4 5void main() => runApp(MyApp()); 6 7class MyApp extends StatelessWidget { 8 9 Widget build(BuildContext context) { 10 return MaterialApp( 11 title: 'Startup Name Generator', 12 home: RandomWords() 13 ); 14 } 15} 16 17class RandomWords extends StatefulWidget { 18 19 RandomWordsState createState() => new RandomWordsState(); 20} 21 22class RandomWordsState extends State<RandomWords> { //here 23 final _suggestions = <WordPair>[]; 24 final _biggerFont = const TextStyle(fontSize: 18.0); 25 26 Widget build(BuildContext context) { return Scaffold( 27 appBar: AppBar( 28 title: Text('Startup Name Generator'), 29 ), 30 body: _buildSuggestions(), 31 ); 32 } 33 Widget _buildSuggestions() { 34 return ListView.builder( 35 padding: const EdgeInsets.all(16.0), 36 itemBuilder: (context, i) { 37 if (i.isOdd) return Divider(); 38 39 final index = i ~/ 2; 40 if (index >= _suggestions.length) { 41 _suggestions.addAll(generateWordPairs().take(10)); 42 } 43 return _buildRow(_suggestions[index]); 44 }); 45 } 46 Widget _buildRow(WordPair pair) { 47 return ListTile( 48 title: Text( 49 pair.asPascalCase, 50 style: _biggerFont, 51 ), 52 ); 53 } 54}
私が理解している、下記のように、DartにおけるGenerics
はクラス定義時にGenericsとして任意の<T>
等を指定することで、定義時は型指定に汎用性を持たせたうえで、インスタンス作成時に利用することで、コンパイルエラー(IDEが通知)として安全に利用できるものと理解・整理しておりました。
Dart
1//知っているGenerics 2abstract class User<T> { 3 final T callName; 4 User(this.callName); 5 6 void call(); 7} 8 9class SingleUser<T> extends User<T> { 10 SingleUser(T callName) : super(callName); 11 12 void call() { 13 print('call SingleUser'); 14 print(callName); 15 } 16}
ご質問
ここで、冒頭の不明なGenerics
のコードに戻りますが、<RandomWords>
は任意の<T>
とは違って、具体的に自分で定義しているクラスでもあり、記法や意味合いも私が知っている後段のGenerics
、SingleUser<T> extends User<T>
とは異なるように思えます。
<RandomWords>
はそもそもGenerics
ではないのでしょうか?
もしくはGenerics
であっても、後段にある記法以外に用途や利用法があるのでしょうか?
具体的にどのような記法でどのような意味合いであるのか、ご存じの方がいればアドバイスをいただけますと幸いです。
宜しくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/10 04:25
2022/05/10 07:44
2022/05/10 08:03
2022/05/11 00:58 編集
2022/05/11 02:31
2022/05/11 06:10 編集
2022/05/11 07:52
2022/05/11 09:42