JDKソース統計をテストして、Javaコードに関するいくつかの仮定を立てるよりも論理的なものになる可能性があります。 途中で、最も珍しいインスタンスを収集しました。たとえば、パラメーターの数が最も多いメソッドです。
それらを見るには、署名をグーグルで検索してください。最初のリンクはJavadocまたはGrepCodeである必要があります。 または、目の前でIntelliJ IDEAを開いている場合は、Shiftキーを4回押した後、クラス名またはメソッド名を挿入するだけです。
SpoonのベースとなっているEclipseコンパイラのバグではASTをビルドできないため、私はjava。*、Javax。*およびorg。*パッケージ、およびJDK 7に限定しました。
統計の観点から-考慮中のすべてのエンティティの量がポアソンの法則に従って分布しているという良い仮定だと思うので、唯一の数-平均値-は分布全体をうまく説明しています。
ただし、必要に応じて、 gist.github.com / leventov / 1f8d8d470b9632bc3cc3で詳細な分析を行うか、プロジェクトをテストできます。
メソッドのパラメーター
平均:1,063
| 数量 | 方法 | 
|---|---|
| 12 | java.lang.String layoutCompoundLabel(javax.swing.JComponent、java.awt.FontMetrics、java.lang.String、javax.swing.Icon、int、int、int、int、java.awt.Rectangle、java.awt.Rectangle 、java.awt.Rectangle、int) | 
| 12 | void drawChunk(java.awt.Image、java.awt.Graphics、boolean、int、int、int、int、int、int、int、int、boolean) | 
| 12 | java.lang.String layoutText(javax.swing.plaf.synth.SynthContext、java.awt.FontMetrics、java.lang.String、javax.swing.Icon、int、int、int、int、java.awt.Rectangle、java .awt.Rectangle、java.awt.Rectangle、int) | 
| 14 | void paintRow(javax.swing.tree.TreeCellRenderer、javax.swing.tree.DefaultTreeCellRenderer、javax.swing.plaf.synth.SynthContext、javax.swing.plaf.synth.SynthContext、java.awtavaGramics 、java.awt.Insets、java.awt.Rectangle、java.awt.Rectangle、javax.swing.tree.TreePath、int、boolean、boolean、boolean) | 
| 15 | void initMouseEvent(java.lang.String、boolean、boolean、org.w3c.dom.views.AbstractView、int、int、int、int、int、boolean、boolean、boolean、boolean、short、org.w3c.dom.events .EventTarget) | 
| 16 | void setRaster(int、int、int、int、int、int、int、int、int、int、int、int、int、int、int、int、int、int、int、int) | 
典型的なメソッドパラメータ
平均:0.010
| 数量 | 方法 | 
|---|---|
| 2 | <K、V> java.util.Map checkedMap(java.util.Map、java.lang.Class、java.lang.Class) | 
| 2 | <K、V> K keyOrNull(java.util.TreeMap $ Entry) | 
| 2 | <K、V> java.util.concurrent.ConcurrentHashMap $ HashEntry entryAt(java.util.concurrent.ConcurrentHashMap $ HashEntry []、int) | 
| 2 | <U、W> java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(java.lang.Class、java.lang.Class、java.lang.String) | 
| 2 | <K、V> java.util.Map newHashMap() | 
| 2 | <M、I> javax.swing.RowFilter andFilter(java.lang.Iterable) | 
| 2 | <R、P> Rは受け入れます(javax.lang.model.element.AnnotationValueVisitor、P) | 
| 2 | <R、P> Rは受け入れます(javax.lang.model.element.ElementVisitor、P) | 
| 2 | <R、P> Rは受け入れます(javax.lang.model.type.TypeVisitor、P) | 
| 3 | <K、V、T> java.util.Collections $ CheckedMap $ CheckedEntrySet $ CheckedEntry checkedEntry(java.util.Map $ Entry、java.lang.Class) | 
コンストラクターオプション
平均:1,207
| 数量 | コンストラクター | 
|---|---|
| 12 | java.awt.LinearGradientPaintContext(java.awt.LinearGradientPaint、java.awt.image.ColorModel、java.awt.Rectangle、java.awt.geom.Rectangle2D、java.awt.geom.AffineTransform、java.awt.RenderH。 awt.geom.Point2D、java.awt.geom.Point2D、float []、java.awt.Color []、java.awt.MultipleGradientPaint $ CycleMethod、java.awt.MultipleGradientPaint $ ColorSpaceType) | 
| 12 | java.lang.management.ThreadInfo(java.lang.Thread、int、java.lang.Object、java.lang.Thread、long、long、long、long、java.lang.StackTraceElement []、java.lang.Object [ ]、int []、java.lang.Object []) | 
| 12 | javax.swing.event.MenuDragMouseEvent(java.awt.Component、int、long、int、int、int、int、int、int、boolean、javax.swing.MenuElement []、javax.swing.MenuSelectionManager) | 
| 13 | java.awt.event.MouseWheelEvent(java.awt.Component、int、long、int、int、int、int、int、int、boolean、int、int、int) | 
| 13 | java.util.SimpleTimeZone(int、java.lang.String、int、int、int、int、int、int、int、int、int、int、int、int) | 
| 14 | java.awt.event.MouseWheelEvent(java.awt.Component、int、long、int、int、int、int、int、int、boolean、int、int、int、double) | 
| 15 | java.awt.RadialGradientPaintContext(java.awt.RadialGradientPaint、java.awt.image.ColorModel、java.awt.Rectangle、java.awt.geom.Rectangle2D、java.awt.geom.AffineTransform、java.awt.attrent float、float、float、float、float []、java.awt.Color []、java.awt.MultipleGradientPaint $ CycleMethod、java.awt.MultipleGradientPaint $ ColorSpaceType) | 
| 16 | javax.imageio.spi.ImageReaderWriterSpi(java.lang.String、java.lang.String、java.lang.String []、java.lang.String []、java.lang.String []、java.lang.String、 boolean、java.lang.String、java.lang.String、java.lang.String []、java.lang.String []、boolean、java.lang.String、java.lang.String、java.lang.String [ ]、java.lang.String []) | 
| 18 | javax.imageio.spi.ImageReaderSpi(java.lang.String、java.lang.String、java.lang.String []、java.lang.String []、java.lang.String []、java.lang.String、 java.lang.Class []、java.lang.String []、boolean、java.lang.String、java.lang.String、java.lang.String []、java.lang.String []、boolean、java。 lang.String、java.lang.String、java.lang.String []、java.lang.String []) | 
| 18 | javax.imageio.spi.ImageWriterSpi(java.lang.String、java.lang.String、java.lang.String []、java.lang.String []、java.lang.String []、java.lang.String、 java.lang.Class []、java.lang.String []、boolean、java.lang.String、java.lang.String、java.lang.String []、java.lang.String []、boolean、java。 lang.String、java.lang.String、java.lang.String []、java.lang.String []) | 
典型的な設計パラメータ
平均:0.001
多くの人は、これが起こることさえ知りません。 JDKには、パラメーター化されたコンストラクターを持つ4つのクラスが見つかりました。 私は実際にこのチップを試してみる機会がありましたが、一度もそうではないようです。
| 数量 | コンストラクター | 
|---|---|
| 1 | javax.management.StandardEmitterMBean(T、java.lang.Class、boolean、javax.management.NotificationEmitter) | 
| 1 | javax.management.StandardMBean(T、java.lang.Class) | 
| 1 | javax.management.openmbean.OpenMBeanAttributeInfoSupport(java.lang.String、java.lang.String、javax.management.openmbean.OpenType、boolean、boolean、boolean、T) | 
| 1 | javax.management.openmbean.OpenMBeanParameterInfoSupport(java.lang.String、java.lang.String、javax.management.openmbean.OpenType、T) | 
典型的なクラスパラメーター
平均:0.117
突然、3つを超える典型的なパラメーターを持つクラスは見つかりませんでした。 私の個人的なベストは8です。
| 数量 | クラス | 
|---|---|
| 2 | クラスjavax.swing.DefaultRowSorter | 
| 2 | クラスjavax.swing.DefaultRowSorter $ ModelWrapper | 
| 2 | クラスjavax.swing.RowFilter | 
| 2 | クラスjavax.swing.RowFilter $ AndFilter | 
| 2 | クラスjavax.swing.RowFilter $エントリ | 
| 2 | クラスjavax.swing.RowFilter $ NotFilter | 
| 2 | クラスjavax.swing.RowFilter $ OrFilter | 
| 2 | クラスjavax.swing.SwingWorker | 
| 2 | クラスjavax.xml.bind.annotation.adapters.XmlAdapter | 
| 3 | クラスjava.util.Collections $ CheckedMap $ CheckedEntrySet $ CheckedEntry | 
実装されたインターフェース
平均:0.555
| 数量 | クラス | 
|---|---|
| 6 | クラスjavax.swing.plaf.basic.BasicComboBoxUI $ハンドラー | 
| 6 | クラスjavax.swing.plaf.basic.BasicTabbedPaneUI $ハンドラー | 
| 6 | クラスjavax.swing.plaf.basic.BasicTableUI $ハンドラー | 
| 6 | クラスjavax.swing.text.JTextComponent $ AccessibleJTextComponent | 
| 7 | クラスjavax.swing.JTable | 
| 7 | クラスjavax.swing.JTable $ AccessibleJTable | 
| 7 | クラスjavax.swing.plaf.basic.BasicInternalFrameUI $ハンドラー | 
| 7 | クラスjavax.swing.plaf.basic.BasicListUI $ハンドラー | 
| 10 | クラスjavax.swing.plaf.basic.BasicTreeUI $ハンドラー | 
| 17 | クラスjava.awt.AWTEventMulticaster | 
匿名の初期化ブロック
平均:0.057
ここで、逆に、JDKの作成者は私よりも初期化ブロックが大好きです。 クラスごとに複数のブロックを記述したことはありません。
| 数量 | クラス | 
|---|---|
| 2 | クラスjavax.management.remote.rmi.RMIConnector | 
| 2 | クラスjavax.swing.text.html.HTML | 
| 3 | クラスjava.lang.invoke.CallSite | 
| 3 | クラスjava.lang.invoke.MethodHandle | 
| 3 | クラスjava.lang.invoke.MethodHandleNatives | 
| 3 | クラスjava.math.BigInteger | 
| 3 | クラスjava.net.InetAddress | 
| 3 | クラスjava.util.zip.ZipFile | 
| 3 | クラスjavax.swing.text.rtf.RTFReader | 
| 6 | クラスjava.lang.invoke.LambdaForm | 
フィールド
平均:3,861
| 数量 | クラス | 
|---|---|
| 84 | クラスjava.awt.Event | 
| 84 | クラスjava.util.Calendar | 
| 93 | クラスjavax.swing.plaf.nimbus.InternalFrameTitlePaneMaximizeButtonPainter | 
| 98 | クラスjava.awt.Component | 
| 99 | 列挙java.lang.Character $ UnicodeScript | 
| 130 | クラスjava.awt.color.ICC_Profile | 
| 140 | クラスjavax.swing.plaf.nimbus.FileChooserPainter | 
| 209 | クラスjava.awt.event.KeyEvent | 
| 213 | クラスjava.lang.Character $ UnicodeBlock | 
| 223 | クラスjava.awt.PageAttributes $ MediaType | 
コンストラクター
平均:1,467
| 数量 | クラス | 
|---|---|
| 10 | クラスjava.lang.invoke.MemberName | 
| 10 | クラスjava.net.Socket | 
| 10 | クラスjava.sql.BatchUpdateException | 
| 12 | クラスjava.math.BigInteger | 
| 13 | クラスjava.util.Scanner | 
| 14 | クラスjava.awt.Dialog | 
| 16 | クラスjava.util.Formatter | 
| 16 | クラスjavax.swing.JDialog | 
| 17 | クラスjava.lang.String | 
| 17 | クラスjava.math.BigDecimal | 
方法
平均:8,003
| 数量 | クラス | 
|---|---|
| 137 | クラスjavax.swing.plaf.synth.ParsedSynthStyle $ DelegatingPainter | 
| 143 | クラスjavax.swing.plaf.nimbus.SynthPainterImpl | 
| 143 | クラスjavax.swing.plaf.synth.ImagePainter | 
| 145 | クラスjava.awt.Window | 
| 147 | クラスjavax.swing.JTree | 
| 148 | クラスjavax.swing.plaf.nimbus.FileChooserPainter | 
| 152 | クラスjava.awt.Container | 
| 187 | クラスjavax.swing.JComponent | 
| 196 | クラスjavax.swing.JTable | 
| 331 | クラスjava.awt.Component | 
ネストされたクラス
平均:0.327
| 数量 | クラス | 
|---|---|
| 20 | クラスjavax.swing.plaf.metal.MetalBorders | 
| 20 | クラスjavax.swing.text.html.CSS | 
| 21 | クラスjavax.swing.plaf.basic.BasicTreeUI | 
| 21 | クラスjavax.swing.text.html.HTMLDocument $ HTMLReader | 
| 27 | クラスjava.beans.MetaData $ java_util_Collections | 
| 30 | クラスjavax.swing.plaf.metal.MetalIconFactory | 
| 33 | クラスjavax.swing.text.DefaultEditorKit | 
| 36 | クラスjava.util.Collections | 
| 48 | クラスjava.beans.MetaData | 
| 59 | クラスjava.util.regex.Pattern |