class Template<template> {
private template Member;
Template(template Member){
this.Member = Member;
}
public void Print(){
System.out.println(this.Member.toString());
}
}
public class InterfaceTemplateDemo{
public static <template> Template<template> Fun(template param){
         //为什么必须在static后面加上<template>否则提示说无法解析template??
         //个人认为按照格式
         //public static Template<template> Fun(template param)
         //就可以了...
return new Template<template>(param);
}
public static void main(String args[]){
Fun("127.0.0.1").Print();
}
}

解决方案 »

  1.   

    java就是这么规定的 泛型方法就是要这么写的 
      

  2.   

    这个你不明白??
    public static <template> Template<template> Fun(template param){}
    如果你把<template>去掉,那代码是:
    public static Template<template> Fun(template param){}
    首先可以理解Template是一个类.那template列???是什么??
        所以必须加上<template>这样写,编译器才知道,他是泛型.
      

  3.   

    那个还是有用的Set<Integer> integers = ...;
    Set<Double> doubles = ...;
    Set<Number> numbers = function(integers ,doubles);public static <Number> T function(Set<? extends T> s1,Set<? extends T){
         Set<? extends T> set = new Hashset<? extends T>();
         set.addAll(s1);
         set.addAll(s2);
         ....
         return set;
    }
    这时候,<Number>就有用了,当你没加上的时候,就报错
      

  4.   

    上面打错了
    Set<Integer> integers = ...;
    Set<Double> doubles = ...;
    Set<Number> numbers = function(integers ,doubles);public static <T> Set<? extends T> function(Set<? extends T> s1,Set<? extends T){
         Set<? extends T> set = new Hashset<? extends T>();
         set.addAll(s1);
         set.addAll(s2);
         ....
         return set;
    }
      

  5.   

    请问2L
    Template<template>
    这句中不是有<template>的吗? 为什么不行的?
      

  6.   

    ER....继续打错,返回Set<E>就好
      

  7.   

    你的写法有点问题:
    public class InterfaceTemplateDemo{
        public static Template<String> Fun(String param){
             //为什么必须在static后面加上<template>否则提示说无法解析template??
             //个人认为按照格式
             //public static Template<template> Fun(template param)
             //就可以了...
            return new Template<String>(param);
        }
        public static void main(String args[]){
            Fun("127.0.0.1").Print();
        }
    }
    这样就可以了,因为你是要实用泛型类,而不是定义新的泛型类。
    定义Template类的时候,已经定义泛型template了,而在使用Template的时候,要把template替换为具体的类型。
    我这里是替换成String类型,你也可以替换为其他任意类型。
      

  8.   

    就是C++中的模板,没什么吧,多了个<template>
      

  9.   


    LZ如果仔细比较两个类就清楚了
    第一个<template>是放在类之后,也就是声明类的同时也声明template,如果用作用域来比喻的话,那么template在整个类中是有效的,当然这样也限定了该类生成实例时必须指明一个template
    而第二个类,除了该static方法外,其他地方并没有声明tamplate,试问,如果不声明,该类又怎么能认识该template呢?从第一个类可知,如果在类后声明template,虽然整个类都可以使用,但是生成实例时也必须要指定template,而第二个类并不想在生成实例时指定一个template,只想在该static方法中使用template,那么template就只能声明在static方法中
    static <template> Template<template>中的Template<template>是一种类型,该template并不是声明,只是因为第一个类是这样定义的,所以要使用该类时也要指定template,而static <template>中的template才是对tempate的声明,所以不要搞混了。