我目前正在使用 java 为一个大学项目编写一个网站。 在编码了我需要的几乎所有内容后,这个错误开始出现在我的屏幕上。这是错误的图像:
不仅是那个,还有这个,都是用同样的方法。 这是错误的图像:
错误出现在“executarRegras”方法上(下面发布的代码)。
我对 java.util.List 和 java.util.Map 的导入都很好,当我对项目的 Web 部分(Servlet、ViewHelpers)进行编码时,这两个问题都开始出现、JSP)。
有时,我只是清理代码并重建它,这些错误就不再出现,并且代码没有标记为“错误”。 (但是,如果我再次清理并重建它,有时该类会再次被标记为错误,或者它只是成功构建。错误只是随机的。
我还没有找到任何解决方案,只有基于 java 构建路径上的导入和更改的东西,但没有任何效果。
没有任何其他类存在错误或不匹配,这是我最近遇到问题的唯一类。
我正在使用:
- Eclipse 版本:2018-12 (4.10.0)
- Java:jdk-11.0.2
- Tomcat:v9.0 服务器
根据要求,这是我的 Java 构建路径:
在这里,为了让我的“核心”存在,我需要依赖“dominio”项目。
此外,如果有用,这里是“核心”项目引用:
代码
代码如下:
package LES1_2019.core.impl.controle;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//myproject internal imports (all classes built sucessfully)
import LES1_2019.core.IDAO;
//import geral
import LES1_2019.core.IFachada;
import LES1_2019.core.IStrategy;
//import resultado
import LES1_2019.core.aplicacao.Resultado;
//import daos
import LES1_2019.core.impl.dao.CategoriaDAO;
import LES1_2019.core.impl.dao.ProdutoDAO;
import LES1_2019.core.impl.negocio.ProdutoMesmoNome;
import LES1_2019.core.impl.negocio.ValidarDadosCategoria;
//import regras de negocio
import LES1_2019.core.impl.negocio.ValidarDadosProduto;
import LES1_2019.dominio.Categoria;
import LES1_2019.dominio.EntidadeDominio;
import LES1_2019.dominio.Produto;
public class Fachada implements IFachada {
private Map<String, IDAO> daos;
private Map<String, Map<String, List<IStrategy>>> rns;
private Resultado objResultado;
public Fachada() {
daos = new HashMap<String, IDAO>();
rns = new HashMap<String, Map<String, List<IStrategy>>>();
CategoriaDAO objCategoriaDAO = new CategoriaDAO();
ProdutoDAO objProdutoDAO = new ProdutoDAO();
daos.put(Categoria.class.getName(), objCategoriaDAO);
daos.put(Produto.class.getName(), objProdutoDAO);
//criando objetos das classes de regras de negocio
ValidarDadosProduto objValidarDadosProduto = new ValidarDadosProduto();
ProdutoMesmoNome objProdutoMesmoNome = new ProdutoMesmoNome();
ValidarDadosCategoria objValidarDadosCategoria = new ValidarDadosCategoria();
//adicionando os objetos das classes de regras a array list de salvar produtos
List<IStrategy> rnsSalvarProduto = new ArrayList<IStrategy>();
rnsSalvarProduto.add(objValidarDadosProduto);
rnsSalvarProduto.add(objProdutoMesmoNome);
//adicionando os objetos das classes de regras a array list de salvar categorias
List<IStrategy> rnsSalvarCategoria = new ArrayList<IStrategy>();
rnsSalvarCategoria.add(objValidarDadosCategoria);
//criando um hasmap das listas com as regras de negocio
Map<String, List<IStrategy>> rnsProduto = new HashMap<String, List<IStrategy>>();
Map<String, List<IStrategy>> rnsCategoria = new HashMap<String, List<IStrategy>>();
//adicionando as operacoes que irao utilizar o map com a lista de regras
rnsProduto.put("SALVAR", rnsSalvarProduto);
rnsCategoria.put("SALVAR", rnsSalvarCategoria);
rnsCategoria.put("ALTERAR", rnsSalvarCategoria);
rns.put(Produto.class.getName(), rnsProduto);
rns.put(Categoria.class.getName(), rnsCategoria);
}
private String executarRegras(EntidadeDominio entidade, String operacao) {
String nmClasse = entidade.getClass().getName();
StringBuilder msg = new StringBuilder();
//this is where I get the first error type Map<K,V> is not visible
Map<String, List<IStrategy>> regrasOperacao = rns.get(nmClasse);
if(regrasOperacao != null) {
//this is where I get the error type List<E> is not visible
List<IStrategy> regras = regrasOperacao.get(operacao);
if(regras != null) {
for(IStrategy s:regras) {
String m = s.processar(entidade);
System.out.println(m);
if(m != null) {
msg.append(m);
msg.append("\n");
}
}
}
}
if(msg.length()>0)
return msg.toString();
else
return null;
}
有什么想法吗?
最佳答案
这个问题的解决方案是将版本从 Java 9 更改为 Java 8。
关于Java 错误 - 类型 List<E> 不可见 - 类型 Map<K,V> 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55085804/