Java方法 入参为接口Interface

251 阅读1分钟

应用案例 一

public String login1(Model model ) {

 
    //免登陆参数
    model.addAttribute("X", X);
    model.addAttribute("XX", XX);
 
    return "login";
}
 
 
/**
 * Java-5-specific interface that defines a holder for model attributes.
 * Primarily designed for adding attributes to the model.
 * Allows for accessing the overall model as a {@code java.util.Map}.
 *
 * @author Juergen Hoeller
 * @since 2.5.1
 */
public interface Model {

   /**
    * Add the supplied attribute under the supplied name.
    * @param attributeName the name of the model attribute (never {@code null})
    * @param attributeValue the model attribute value (can be {@code null})
    */
   Model addAttribute(String attributeName, @Nullable Object attributeValue);

   /**
    * Add the supplied attribute to this {@code Map} using a
    * {@link org.springframework.core.Conventions#getVariableName generated name}.
    * <p><i>Note: Empty {@link java.util.Collection Collections} are not added to
    * the model when using this method because we cannot correctly determine
    * the true convention name. View code should check for {@code null} rather
    * than for empty collections as is already done by JSTL tags.</i>
    * @param attributeValue the model attribute value (never {@code null})
    */
   Model addAttribute(Object attributeValue);

   /**
    * Copy all attributes in the supplied {@code Collection} into this
    * {@code Map}, using attribute name generation for each element.
    * @see #addAttribute(Object)
    */
   Model addAllAttributes(Collection<?> attributeValues);

   /**
    * Copy all attributes in the supplied {@code Map} into this {@code Map}.
    * @see #addAttribute(String, Object)
    */
   Model addAllAttributes(Map<String, ?> attributes);

   /**
    * Copy all attributes in the supplied {@code Map} into this {@code Map},
    * with existing objects of the same name taking precedence (i.e. not getting
    * replaced).
    */
   Model mergeAttributes(Map<String, ?> attributes);

   /**
    * Does this model contain an attribute of the given name?
    * @param attributeName the name of the model attribute (never {@code null})
    * @return whether this model contains a corresponding attribute
    */
   boolean containsAttribute(String attributeName);

   /**
    * Return the attribute value for the given name, if any.
    * @param attributeName the name of the model attribute (never {@code null})
    * @return the corresponding attribute value, or {@code null} if none
    * @since 5.2
    */
   @Nullable
   Object getAttribute(String attributeName);

   /**
    * Return the current set of model attributes as a Map.
    */
   Map<String, Object> asMap();

}
 

应用案例 二



public static void main(String[] args) {
    //test 类
    TestClass test = new TestClass();
    //class1 类, 实现了OutputInterface接口
    OutputClass1Impl class1 = new OutputClass1Impl();
    //class2 类, 实现了OutputInterface接口
    OutputClass2Impl class2 = new OutputClass2Impl();
    test.getOutput(class1);
    System.out.println("<----------->");
    test.getOutput(class2);
}

//Inter接口
private interface OutputInterface {
    public void output();
}

//Class1类 实现Inter接口
static class OutputClass1Impl implements OutputInterface {
    @Override
    public void output() {
        System.out.println("this is Class1");
    }
}

//Class2类 实现Inter接口
static class OutputClass2Impl implements OutputInterface {
    @Override
    public void output() {
        System.out.println("this is Class2");
    }
}

//Test1类 参数为Inter接口
static class TestClass {
    //方法参数为接口
    public void getOutput(OutputInterface inter) {
        inter.output();
    }
}