采访者问:我们可以实例化一个抽象类吗?我说,不,他告诉我 - 错,我们可以.
我对此有点争论.然后他告诉我自己在家里试试.
abstract class my {
public void mymethod() {
System.out.print("Abstract");
}
}
class poly {
public static void main(String a[]) {
my m = new my() {};
m.mymethod();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我正在创建我的类的实例并调用抽象类的方法.有人可以向我解释一下吗?在我的采访中我真的错了吗?
一位采访者问我:
什么是Observer和Observable我们何时应该使用它们?
我不知道这些术语的,所以,当我回到家,开始对谷歌搜索Observer和Observable,我发现来自不同资源的一些要点:
1)
Observable是一个类,Observer是一个接口.2)
Observable该类维护一个Observers 列表.3)当一个
Observable对象被更新时,它会调用update()每个Observers 的方法来通知它,它被改变了.
我找到了这个例子:
import java.util.Observable;
import java.util.Observer;
class MessageBoard extends Observable
{
public void changeMessage(String message)
{
setChanged();
notifyObservers(message);
}
}
class Student implements Observer
{
@Override
public void update(Observable o, Object arg)
{
System.out.println("Message board changed: " + arg);
}
}
public class MessageBoardTest
{
public static void main(String[] args)
{ …Run Code Online (Sandbox Code Playgroud) 根据String #intern(),intern如果在String池中找到String,则该方法应该从String池返回String,否则将在String池中添加新的字符串对象并返回此String的引用.
所以我试过这个:
String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();
if ( s1 == s2 ){
System.out.println("s1 and s2 are same"); // 1.
}
if ( s1 == s3 ){
System.out.println("s1 and s3 are same" ); // 2.
}
Run Code Online (Sandbox Code Playgroud)
我期待s1 and s3 are same将被打印为s3被实习,并且s1 and s2 are same不会被打印.但结果是:两行都打印出来.这意味着,默认情况下,字符串常量被实现.但如果是这样,那么为什么我们需要这种intern方法呢?换句话说,我们什么时候应该使用这种方法?
Java中的接口类似于类,但接口的主体只能包含抽象方法和
final字段(常量).
最近,我看到了一个问题,看起来像这样
interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}
Run Code Online (Sandbox Code Playgroud)
根据接口定义,只允许抽象方法.为什么它允许我编译上面的代码?什么是default关键字?
另一方面,当我试图写下面的代码时,它说 modifier default not allowed here
default class MyClass{
}
Run Code Online (Sandbox Code Playgroud)
代替
class MyClass {
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我default关键字的目的?是否只允许在界面内?它与default(无访问修饰符)有何不同?
class Program {
static final int var;
static {
Program.var = 8; // Compilation error
}
public static void main(String[] args) {
int i;
i = Program.var;
System.out.println(Program.var);
}
}
Run Code Online (Sandbox Code Playgroud)
class Program {
static final int var;
static {
var = 8; //OK
}
public static void main(String[] args) {
System.out.println(Program.var);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么案例1会导致编译错误?
我已web.xml为我的应用程序手动配置.现在,我在运行我的应用程序时遇到了问题.我正试图servlet从我的jsp页面访问我的.但是,它正在抛出错误page not found.
servlet位于文件夹下方
<application folder>/WEB-INF/classes/<package>
Run Code Online (Sandbox Code Playgroud)
那么,究竟应该是在Servlet中的条目url-pattern和servlet-mapping.这样,servlet可以通过URL访问.
我需要一个SQL查询来获取两个已知字符串之间的值(返回的值应该以这两个字符串开头和结尾).
一个例子.
"我所知道的是,这条狗非常糟糕,无论其他人怎么想,都要立即受到严厉的惩罚."
在这种情况下,已知的字符串是"狗"和"立即".所以我的询问应该回归"狗一直非常糟糕,需要立刻进行严厉的惩罚"
到目前为止,我已经想出了这个,但无济于事:
SELECT SUBSTRING(@Text, CHARINDEX('the dog', @Text), CHARINDEX('immediately', @Text))
Run Code Online (Sandbox Code Playgroud)
@Text是包含主字符串的变量.
有人可以帮我解决我出错的地方吗?
我刚读了Factory Method.据我所知,它提供了一种将实例化委托给子类的方法.但我无法理解现实场景中的可能用途.
任何人都可以给出一个典型的例子,展示如何使用Factory方法模式,以便我可以与我所读到的内容相关联.
工厂方法模式是最佳解决方案的问题陈述足以使其清楚.
情况1
static void call(Integer i) {
System.out.println("hi" + i);
}
static void call(int i) {
System.out.println("hello" + i);
}
public static void main(String... args) {
call(10);
}
Run Code Online (Sandbox Code Playgroud)
案例1的输出:hello10
案例2
static void call(Integer... i) {
System.out.println("hi" + i);
}
static void call(int... i) {
System.out.println("hello" + i);
}
public static void main(String... args) {
call(10);
}
Run Code Online (Sandbox Code Playgroud)
显示编译错误reference to call ambiguous.但是,我无法理解.为什么?但是,当我评论出任何call()方法时Case 2,它的工作正常.任何人都可以帮助我理解,这里发生了什么?
只有子类实现了Serializable接口.
import java.io.*;
public class NewClass1{
private int i;
NewClass1(){
i=10;
}
int getVal() {
return i;
}
void setVal(int i) {
this.i=i;
}
}
class MyClass extends NewClass1 implements Serializable{
private String s;
private NewClass1 n;
MyClass(String s) {
this.s = s;
setVal(20);
}
public String toString() {
return s + " " + getVal();
}
public static void main(String args[]) {
MyClass m = new MyClass("Serial");
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("serial.txt"));
oos.writeObject(m); …Run Code Online (Sandbox Code Playgroud) java inheritance serialization deserialization notserializableexception
java ×8
abstract ×1
boxing ×1
class ×1
default ×1
final ×1
inheritance ×1
interface ×1
java-7 ×1
java-8 ×1
methods ×1
object ×1
observable ×1
observers ×1
oop ×1
polymorphism ×1
servlets ×1
sql ×1
sql-server ×1
static ×1
string ×1
substring ×1
url-pattern ×1
web.xml ×1