2015-06-19 5 views
3
package set; 

import java.util.*; 

public class Set 
{ 

    public static void main(String[] args) 
    { 
    String [] things = {"appple", "bob", "ham", "bob", "bacon"}; 
    List<String> list = Arrays.asList(things); 

    System.out.printf("%s ", list); 
    System.out.println(); 

    Set<String> set = new HashSet<String>(list); 
    System.out.printf("%s ", set); 

    } 

} 

Когда я пытаюсь запустить эту программу, я продолжаю получать эту ошибку для объявления моего набора. Что я делаю не так?Тип Set не принимает параметры

+0

Вы должны сначала ознакомиться с соглашением об именах, если вы новичок в OOPS здесь. Http://www.oracle.com/technetwork/java/codeconventions-135099.html – Hiru

+2

Вы пытаетесь иметь две разные вещи, то же имя. Назовите свой основной класс чем-то иным, чем 'Set'. –

ответ

3

Переименуйте свой класс public class Set на имя, которое не скроет java.util.Set.

Ваш собственный класс Set не принимает никаких параметров типа. Вот почему Set<String> не передает компиляцию.

Например:

package set; 

import java.util.*; 

public class SetTest 
{ 
    public static void main(String[] args) 
    { 
     String [] things = {"appple", "bob", "ham", "bob", "bacon"}; 
     List<String> list = Arrays.asList(things); 

     System.out.printf("%s ", list); 
     System.out.println(); 

     Set<String> set = new HashSet<String>(list); 
     System.out.printf("%s ", set); 
    } 
} 
1

Вы назвали свой собственный класс Set, скрывая стандартный класс Set в пакете java.util.

Переименуйте свой класс в нечто иное, чем Set.

0

Вы затеняете импорт java.util.Set, называя свой собственный локальный класс Set (set.Set имеет более высокую видимость видимости и не является общим). Вы можете переименовать set.Set или использовать полное имя (и алмазный оператор <>). Изменение

Set<String> set = new HashSet<String>(list); 

к чему-то вроде

java.util.Set<String> set = new HashSet<>(list); 
0

Хотя не очень хорошая идея назвать классы, которые уже присутствуют в Java API и т.д.

Добавление этого будет достаточно

java.util.Set<String> set = new HashSet<String>(list); 

Еще вы внесете изменения в действующие

package set; 

import java.util.Arrays; 
import java.util.HashSet; 
import java.util.List; 

public class Set { 

    public static void main(String[] args) { 
     String[] things = { "appple", "bob", "ham", "bob", "bacon" }; 
     List<String> list = Arrays.asList(things); 

     System.out.printf("%s ", list); 
     System.out.println(); 

     java.util.Set<String> set = new HashSet<String>(list); 
     System.out.printf("%s ", set); 

    } 
}