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 |