|
|
|||||||||
|
|||||||||
Technical Q&AJava 08 - Java の
|
|
Salad: |
'aete' を手作業で編集すればもっと読みやすくなるのはわかっていますが、それではちょっと面倒です。この情報の生成方法を指定する方法はありますか。
A: あります。イベント、クラス、メソッド、パラメータなどに関する情報は、Java クラスの内部を調べることによって生成されます。クラスに対して BeanInfo を作成すれば、より人間が読みやすい用語を提供することができます。
特に、java.beans.MethodDescriptor を使うと、クラスのパラメータについての説明とメソッドの記述子を指定することができます。
たとえば、次のような Salad.java クラスがあるとします。
public class Salad
{
public void toss( int howHigh ){ ... }
}
|
import
java.beans.*;
import java.lang.reflect.*;
public class
SaladBeanInfo extends SimpleBeanInfo
{
public MethodDescriptor[ ] getMethodDescriptors()
{
MethodDescriptor md[ ] = new MethodDescriptor[1];
try
{
ParameterDescriptor[ ] pd = new ParameterDescriptor[1];
pd[0] = new ParameterDescriptor();
pd[0].setShortDescription( "Number of inches to toss" );
pd[0].setName( "height" );
md[0] = new MethodDescriptor( getMethod( Salad.class, "toss" ), pd );
md[0].setShortDescription( "Toss the salad vigorously." );
return md;
}
catch ( IntrospectionException e )
{
e.printStackTrace();
}
return null;
}
Method getMethod(
Class c, String methodName ) throws IntrospectionException
{
Method methods[ ][ ] = c.getMethods();
for ( int i = 0; i < methods.length; i++ )
{
if ( methods[i].getName().equals( methodName ))
{
return methods[i];
}
}
throw new IntrospectionException( "No such method \"" + methodName + "\"" );
}
}
|
ここでのポイントは2つあります。1つは、メソッドの記述子を指定していることです。ここでは短い説明を設定しています
(これによって、デフォルトで生成された 'aete'
のメソッドのシグネチャが置き換えられます)。もう1つは、パラメータの記述子を指定していることです。これによってスクリプトの記述者は、デフォルトで生成された
'aete'
を利用するアプリケーションに共通の「method object
parameter
{...}」というやっかいな構文を使わずに、次の構文を使うことができます。
toss of
Salad "Green Salad" height 10
この構文は、次の構文よりも格段に理解しやすくなっています。
toss of
Salad "Green Salad" parameters { 10 }
Technical Q&As | Contents
Previous Question | Next
Question
To contact us, please use the Contact
Us page.