小编Shi*_*han的帖子

@Inherited Java注释

Herbert Schildt在他关于Java的书中提到过,

@Inherited是一个标记注释,只能用于另一个注释声明.此外,它仅影响将在类声明上使用的注释.@Inherited导致超类的注释被子类继承.

因此,当为一个特定的注释的请求到子类制成,如果该注释中不存在的子类,那么它的超类被检查.如果该注释存在于超类中,并且如果注释了@Inherited该注释,则将返回该注释.

我很清楚注释不是继承的.例外是注释,其声明用注释标注@Inherited.

我已经明白了注释的其余部分,其中包括java.lang.annotation中:@Retention,@Documented,和@Target.和其他三@Override,@Deprecated@SuppressWarnings.

@Inherited注释方面我有点困惑.有人可以通过一个简单的foob​​ar示例演示它吗?

其次,在StackOverflow上经历一个关于此的问题,我遇到了这个,

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD) @Inherited
public @interface Baz { 
           String value(); }

public interface Foo{
    @Baz("baz") void doStuff();
}

public interface Bar{
    @Baz("phleem") void doStuff();
}

public class Flipp{
    @Baz("flopp") public void doStuff(){} 
}
Run Code Online (Sandbox Code Playgroud)

@Inherited注释在注释时有什么用处@interface Baz

请不要在使用Spring Framework的注释的上下文中解释我,我不熟悉它.

java inheritance annotations

4
推荐指数
1
解决办法
3196
查看次数

为什么我需要一个视图类来解析Spring MVC中的JSTL视图?

我正在通过Craig Walls Manning Spring4 in Action.

他建议,在创建JSP视图中,

InternalResourceViewResolver最终将逻辑视图名称解析为引用JSP文件的InternalResourceView实例.但是,如果这些JSP文件引用用于格式化或消息的JSTL标记,那么您可能希望配置InternalResourceViewResolver来解析JSTLView.

使用InternalResourceView Resolver解析器JstlView而不是InternalResourceView所需的只是设置其viewClass属性.

像这样,

 @Bean
    public ViewResolver viewResolver() {

        InternalResourceViewResolver resolver =
            new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);

        return resolver;
    }
Run Code Online (Sandbox Code Playgroud)

为什么我需要添加此行

resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);

这个课程究竟意味着什么?

有什么建议吗?`

spring jsp jstl spring-mvc

4
推荐指数
1
解决办法
3945
查看次数

2个线程可以同时访问对象的2个同步方法吗?

我在接受采访时问了这个问题.在我告诉他之前,

一旦线程进入实例上的任何同步方法,任何其他线程都不能在同一实例上输入任何其他同步方法.

考虑一下片段:

Q1:

public class Q1 {
    int n;
    boolean valueSet = false;

    synchronized int get() {
        while (!valueSet)
            try {
                wait();
            } catch (InterruptedException e) {
                System.out.println("InterruptedException caught");
            }
        System.out.println("Got: " + n);
        valueSet = false;
        notify();
        return n;
    }

    synchronized void put(int n) {
        while (valueSet)
            try {
                wait();
            } catch (InterruptedException e) {
                System.out.println("InterruptedException caught");
            }
        this.n = n;
        valueSet = true;
        System.out.println("Put: " + n);
        notify();
    }
}
Run Code Online (Sandbox Code Playgroud)

Producer1:

public class Producer1 implements Runnable { …
Run Code Online (Sandbox Code Playgroud)

java multithreading

4
推荐指数
1
解决办法
149
查看次数

Arrays.copyOf在使类成为不可变的过程中扮演什么角色?

来自Java Concurrency in Practice的摘录/片段-

@Immutable
class OneValueCache{
    private final BigInteger lastNumber;
    private final BigInteger[] lastFactors;

    public OneValueCache(BigInteger i, BigInteger[] factors) {
        this.lastNumber = i;
        this.lastFactors = Arrays.copyOf(factors,factors.length);     // 1
    }

    public BigInteger[] getFactors(BigInteger i){
        if(lastNumber == null || lastNumber.equals(i))
            return null;
        else
            return Arrays.copyOf(lastFactors,lastFactors.length);     // 2
    }
}
Run Code Online (Sandbox Code Playgroud)

作者提到

如果没有构造函数和getter中的copyOf调用,OneValueCache将不会是不可变的.为方便起见,在Java 6中添加了Arrays.copyOf; 克隆也行.

1)Arrays.copyOf在使上述类成为IMMUTABLE时扮演什么角色?怎么样?

以上不可改变的类正如此使用 -

@ThreadSafe
public class VolatileCachedFactorizer implements Servlet{

    private volatile OneValueCache cache = new OneValueCache(null, null);

    public void service(ServletRequest req, ServletResponse resp){
        BigInteger i …
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
1
解决办法
171
查看次数

在java中初始化静态变量

我在接受采访时被问到这个问题

如果你这样做,

    private int c = d;
    private int d;
Run Code Online (Sandbox Code Playgroud)

它会导致编译时错误

在定义之前无法引用字段.

来到面试问题,

    1  public static int a = initializeStaticValue();
    2  public static int b = 20;


    3  public static int initializeStaticValue() {
    4   return b;

       }

    5   public static void main(String[] args) {
           System.out.println(a);
           System.out.println(b);
        }
Run Code Online (Sandbox Code Playgroud)

a通过调用initializeStaticValue()来获得与初始化相同的响应,其中它引用了一个未定义的b.

但程序运行正常,编译和打印

0
20
Run Code Online (Sandbox Code Playgroud)

我很困惑为什么

Cannot reference a field before it is defined. 
Run Code Online (Sandbox Code Playgroud)

没被抛出.

其次,当我调试它时,为什么控制着陆

3  public static int initializeStaticValue() {
Run Code Online (Sandbox Code Playgroud)

我的意思是,为什么这是该计划的起始位置.

java static

3
推荐指数
1
解决办法
72
查看次数

无法从 jsf-resource-library 中找到或提供本地化资源

我试图从书中复制一个例子,

该结构可以从下面附加的图像中可视化-

更新

在此处输入图片说明

将使用该库的视图与下面给出的一样简单-

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <h:head>
        <title></title>
        <h:outputStylesheet library="#{facesContext.viewRoot.locale}/default" name="css/rafa.css"/>
        <h:outputScript library="#{facesContext.viewRoot.locale}/default" name="rafa.js"/>        
    </h:head>
    <h:body>   
        <f:view locale="#{localeBean.mylocale}">     
            <div style="width:100%; text-align:center">
                <h:form>
                    <h:commandButton value="Rafa at Roland Garros" action="#{localeBean.changeLocale('fr')}"/>
                    <h:commandButton value="Rafa at Wimbledon" action="#{localeBean.changeLocale('en')}"/>
                    <h:commandButton value="Rafa at US Open" action="#{localeBean.changeLocale('us')}"/>
                    <h:commandButton value="Rafa at Australian Open" action="#{localeBean.changeLocale('au')}"/>
                </h:form>
            </div>
            <div style="width:100%; text-align:center">
                <!--<h:graphicImage library="#{facesContext.viewRoot.locale}/default" name="img/rafa.png"/> -->
                <h:graphicImage value="#{resource[facesContext.viewRoot.locale+='/default:img/rafa.png']}"/>
            </div>
        </f:view>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

@Named
@RequestScoped
public class LocaleBean {

    private String mylocale = "fr";
    // getters & setters
}
Run Code Online (Sandbox Code Playgroud)

我使用 …

resources jsf localization jsf-2 outputstylesheet

3
推荐指数
1
解决办法
2782
查看次数

Joshua Bloch #Item 1:考虑静态工厂方法而不是构造函数

这与Joshua Bloch撰写的"Effective Java"一书中创建和销毁对象有关

第1项:考虑静态工厂方法而不是构造函数

此方法将布尔基元值转换为布尔对象引用:

public static Boolean valueOf(boolean b) {
    return b ? Boolean.TRUE : Boolean.FALSE;
}
Run Code Online (Sandbox Code Playgroud)

请注意,静态工厂方法与"设计模式"中的"工厂方法"模式不同[Gamma95,p.107].此项中描述的静态工厂方法在设计模式中没有直接等效项.

作者似乎在谈论静态工厂方法和工厂方法模式之间的区别.这有什么区别?

另外一点,BalusC 在这个帖子中提到 Factory Method下的一个链接,java.util.Calendar#getInstance()这是一个静态工厂方法,因此建议静态工厂方法是Factory Method Pattern的子集.

java design-patterns factory factory-pattern

3
推荐指数
2
解决办法
1626
查看次数

.txt文件的磁盘大小和大小

在记事本中打开一个新文件并在其中插入没有引号的句子,"四分和七年前".

Four              4 characters
score             5 characters
and               3 characters
seven             5 characters 
years             5 characters 
ago               3 characters
Run Code Online (Sandbox Code Playgroud)

总计:25 + 5空格= 30个字符.

您会发现该文件在磁盘上的大小为30个字节:每个字符1个字节.以getSize.txt名称将文件保存到磁盘.然后查看文件的大小.通常,每个字符都占用一个字节.

大小:30字节
磁盘大小:4.00 KB(4,096字节)

以下段落是从pdf复制粘贴的.

如果您在计算机查看时查看该文件,您会发现每个字节不包含字母而是数字 - 该数字是与该字符对应的ASCII代码(见下文).所以在磁盘上,文件的数字如下所示:

F ourandseven

70 111 117 114 32 97 110 100 32 115 101 118 101 110

通过查看ASCII表,您可以看到每个字符与使用的ASCII代码之间的一一对应关系.注意32用于空格--32是空格的ASCII码.如果我们想要技术上正确的话,我们可以将这些十进制数扩展为二进制数(所以32 = 00100000) - 这就是计算机真正处理事物的方式.

1)我知道每件事都以比特和字节的形式存储,所以通常这意味着 - "你会发现每个字节不包含字母而是数字 - 数字是与字符对应的ASCII码" .一个字节是8位.那么"每个字节一个数字 - 数字是ASCII代码"怎么样?除了0和1之外,一个字节如何包含一个ASCII数字(例如,49为'1')?

2)磁盘上的大小和大小有什么区别?ASCII和Unicode如何适应它?

3)在Java中,字符串是对象.我可以说这是一个多个字符连在一起吗?String str ="四分和七年前"那么str如何存储在内存中.它与保存在记事本文件中的方式相同吗?

java string filesize bit

2
推荐指数
1
解决办法
2424
查看次数

Java中具有隐式返回类型的构造函数

我对Java中的Constructors的所有内容都非常了解,我在下面写下这些内容以确保:

每次创建实例时初始化类中的所有变量可能会很繁琐.

在首次创建对象时完成所有设置会更简单.

由于初始化的要求非常普遍,因此Java允许对象在创建时自行初始化.通过使用构造函数执行此自动初始化.

在新操作符完成之前,构造函数在创建对象后立即自动c/d.他们没有返回类型,甚至没有返回.

阅读Herbert Schildt完整参考文献,我发现了这一段.

类的构造函数的隐式返回类型是类类型本身.初始化对象的内部状态是构造函数的工作,这样创建实例的代码将立即具有完全初始化的可用对象.

即使知道好的构造函数没有返回类型,甚至无效,我也会发现自己真的与"隐式返回类型"这个术语混淆了.

某人可以吗?

java constructor

2
推荐指数
1
解决办法
3441
查看次数

如何在Java中将日期转换为dd.MM.yyyy格式?

如何将日期转换为或(Mon Jan 12 00:00:00 IST 2015)格式?MM.dd.yyyydd.MM.yyyy

我尝试使用以下方法

    String dateStr = "Mon Jan 12 00:00:00 IST 2015";

    DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
    System.out.println(formatter.format(dateStr));
Run Code Online (Sandbox Code Playgroud)

但得到了

Exception in thread "main" java.lang.IllegalArgumentException: 
Cannot format given Object as a Date
Run Code Online (Sandbox Code Playgroud)

java date jdk6

2
推荐指数
1
解决办法
5万
查看次数