这个程序为什么要加static?
对于下面这个程序在子类中
一,为什么要用static修饰?
二,在方法minmax为什么也要用static 修饰?
三,<String>是否可以去掉,我试了一下,是可以的,但是不是有的情况下不可以?
public class Test
{
		public static void main(String[] args)
		{
				String[] words = {"Mary", "had", "a", "little", "lamb"};
				A.B mm = A.minmax(words);
				System.out.println("min = " + mm.getFirst());	
				System.out.println("max = " + mm.getSecond());
		}	
}
class A
{
		public static class B<String>		
		{
				private String first;
				private String second;
				
				public B(String first, String second)
				{
					 this.first = first;
					 this.second = second;		
				}	
				public String getFirst()
				{
						return first;	
				}
				public String getSecond()
				{
						return second;	
				}
		}
		
		public static B<String> minmax(String[] a)
		{
				if(a==null || a.length==0)
				{
						return null;	
				}	
				
				String min = a[0];
				String max = a[0];
				
				for(int i=1; i<a.length; i++)
			  {
			  		if(min.compareTo(a[i])>0)
			  		{
			  			 	min = a[i];
			  		}	
			  		if(max.compareTo(a[i])<0)
			  		{
			  				max = a[i];	
			  		}
			  }
			  
			  return new B<String>(min, max);
		}	
}
              ------解决方案--------------------方法声明为static时,可以直接通过类名.方法名来调用。
------解决方案--------------------一,为什么要用static修饰?
static表示静态的,不需要new操作,就可以直接调用。建议LZ把static去掉,看看怎么修改代码,才能让它正常执行。
二,在方法minmax为什么也要用static 修饰?
A.minmax,这是用类名标注的方式调用,因此要为静态的。如果去掉static,那么调用此方法,需要new一个A的对象,通过对象引用调用。
三,<String>是否可以去掉,我试了一下,是可以的,但是不是有的情况下不可以?
可以去掉。这是泛型检查。如果不检查,传了一个其它类型的对象进去,可能会在
代码执行的时候报错。加泛型的好处是,在编译时就做了类型判断,这样如果误传类型对象,可以在
编译时报错。
------解决方案--------------------class A没有 minmax这个方法。
 ------解决方案--------------------
------解决方案--------------------static表示静态的,不需要new操作,就可以直接调用
方法minmax  如果去掉 需要new一个
------解决方案--------------------一.static修饰的类或方法或属性,都是类相关的,与类实例化的对象无关,因此只需使用类名就可以使用static修改时的任何成员。
二.A.B mm = A.minmax(words);若想在B类实例化对象之前调用B类的方法,那么该方法必须为类相关,因此需要用static修饰。
三.<String>任何情况下都可以去掉,这是java泛型的内容,加上<String>将类局限于只对String类型进行描述,如果不加的话,则可以对所有类型进行描述。